给出这些示例字符串:
c
如何设置将输出的正则表达式:
str_1 = 'This will be captured (unwanted static pattern)'
str_2 = 'This wil also be captured'
到目前为止,我已经尝试过(使用不区分大小写的标志):
out_1 = 'This will be captured'
out_2 = 'This wil also be captured'
但是当模式不存在时,它不会捕获第一组。
我的确切问题是:我们如何传播“ *”,“ +”或“?”整个模式
答案 0 :(得分:2)
您希望匹配尽可能短。将str()
更改为(.*)
。您还需要将(.*?)
移动到可选的后缀内(否则,您要求匹配在非空空格序列之前结束)。
这似乎是自相矛盾的,直到您理解我们仍然意味着“最短的匹配仍将允许整个正则表达式匹配”。因此,当可选后缀不存在时,我们匹配从头到尾并且在该位置时,我们更喜欢一个不会一直持续到字符串结尾的匹配项。
答案 1 :(得分:0)
如果确定第一组中没有括号,则可以尝试([^\(]*)(?:\s+\(unwanted static pattern\))?$
,并注意空格。