StackOverflow上的你好朋友
我有以下[^&] _ \ s (SF)* \ d {8}正则表达式
我正在尝试将8位数字与SF或SF_匹配
例如下面的示例
1)_zz&69050398_5d147597dd4aca00014351d9_zz SF 76064603RPL_Import_Create
2)_ac&68728692_5d18fa52dd4aca00014356dd_SF 76113839的副本
我测试时,SF的S没有突出显示。和第三个“ _”之前的8位数字也将突出显示。我需要避免这种情况。
您可以在这里看到它 https://regex101.com/r/P0P238/1/
如何匹配整个“ SF”?
[^&]_*\s*(SF)*\d{8}
答案 0 :(得分:2)
在模式[^&]_*\s*(SF)*\d{8}
中,您不匹配与号[^&]
,而不是0+倍_
,0+倍空白字符,并以0+倍的重复组匹配SF捕获。然后,模式以匹配的8位数字结束。
这意味着有很多“可选”零件可以匹配0次以上。
因为[^&]
可以匹配F
,所以_*\s*(SF)*
是可选的,但是\s*
可以匹配空格,然后可以匹配8位数字
您可以通过从组中删除量词来更新样式,并在字符类\s
中匹配_
和[\s_]
[^&][\s_](SF) \d{8}
如果您只想匹配SF前面的8位数字和一个空格,则可以使用不区分大小写的匹配并使用:
(sf) \d{8}