以下文字:
start - before capture text - tocapture - maybe after capture
我必须可靠地捕获值“text - tocapture”,而不是拖动可选的- maybe after capture
部分。
text - tocapture
中的空格 - 空格模式可能存在也可能不存在。 text - tocapture
也可以是一个单词或有空格。- maybe after capture
,它将始终以space-dash-space开头,然后是随机文本。 无论text - tocapture
是否存在,我都需要- maybe after capture
完全匹配。
我提出的最好的是:
^start - before capture (.*)( - .*)?$
问题是,它捕获了“text-tocapture”之后的所有内容,大概是因为它还包含“ - ”。我尝试了一些负面的前瞻性东西,但没有运气。请参阅下面的Rubular输出。
答案 0 :(得分:0)
这是正常的:.*
捕获所有内容,第二部分是可选的。
因此,您的.*
会抓取text - tocapture - maybe after capture
并为第二组留下任何内容。由于量词?
使其成为可选项,因此对于空字符串非常满意......
为了可靠地捕获您想要的内容,您可以使用:
^start - before capture ([^-]+-[^-\s]+).*
答案 1 :(得分:0)
如果我理解你的需要,我认为应该这样做:
^start - before capture (.*? - .*?)( - .*)?$
其中$1
应该捕获您需要的内容。在您的示例中,它捕获:
1. text - tocapture
2. - maybe after capture