我尝试对以下行进行正则表达式(每个单词用一个空格分隔):
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
有人能帮我找到正确的方向吗?
谢谢
最佳答案
您的问题是,您在正则表达式中要求两个空格(\s),如果不包含 thisisoptional ,则这两个空格与您的情况不匹配。简单的解决方法是将第二个空格包含在第二个捕获组中:
(.*?)\s(thisisoptional\s)?(.*)
这选择任何内容,然后是可选的,然后是任何内容
关于字符串内带有可选单词的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57733239/