正则表达式:
(\d+).*?((?:[a-z][a-z\s?]+)).*?((?:court|ct|street|st)).*?(UNT\s?[\d\w].*|#\s?[\d\w].*)/ig
匹配
119 testing str test court #123
119 testing stret test court # 123
119 testing strt ct UNT 123
119 testing st UNT dsff
123 testing blah ct
我当前的正则表达式正在前4个条目上正确捕获。我怎样才能使#和UNT的所有内容都可选,所以我的最终“123测试版本”也可以拥有捕获组?
答案 0 :(得分:1)
您不能将结尾作为选项,如果不必,则不会匹配。
必须诱使它继续下去。
可以使用EOL锚点$
完成。
请注意,此部分[a-z\s?]
是一个匹配a-z或空格或问号文字的类。
不确定这是不是你的意思。
(?im)(\d+).*?((?:[a-z](?:[a-z]|[^\S\r\n])+)).*?((?:court|ct|street|st)).*?((?:UNT|\#)[^\S\r\n]?\w.*)?$
解释:
(?im) # Modifiers: ignore case, multi-line
( \d+ ) # (1)
.*?
( # (2 start)
(?:
[a-z]
(?: [a-z] | [^\S\r\n] )+
)
) # (2 end)
.*?
( # (3 start)
(?: court | ct | street | st )
) # (3 end)
.*?
( # (4 start)
(?: UNT | \# )
[^\S\r\n]? \w .*
)? # (4 end)
$ # End of line (or string)