首页 > 解决方案 > 字符串中带有可选单词的正则表达式

问题描述

我尝试对以下行进行正则表达式(每个单词用一个空格分隔):

Firstpartstring thisisoptional secondpartstring

我希望每个字符串作为组匹配:

Group 1.    Firstpartstring
Group 2.    thisisoptional
Group 3.    secondpartstring

这是我到目前为止所尝试的:

(.*?)\s(thisisoptional)?\s(.*)

唯一的问题是,如果字符串中不存在“thisisoptional”,我不会得到任何结果。

我预计:

Group 1.    Firstpartstring
Group 2.    
Group 3.    secondpartstring

请查看此演示:https ://regex101.com/r/YBlYXm/1

谁能让我朝着正确的方向前进?

谢谢

标签: regexstringoptionalword

解决方案


可选词之前的空格也应该是可选的;否则将需要在第一个单词和最后一个单词之间有两个空格来匹配:

(.*?)(?:\s(thisisoptional))?\s(.*)

https://regex101.com/r/YBlYXm/2


推荐阅读