要捕获的文本如下所示。。你知道吗
Policy Number ABCD000012345 other text follows in same line....
我的正则表达式看起来像这样
regex value='(?i)(?:[P|p]olicy\s[N|n]o[|:|;|,][\n\r\s\t]*[\na-z\sA-Z:,;\r\d\t]*[S|s]e\s*[H|h]abla\s*[^\n]*[\n\s\r\t]*|(?i)[P|p]olicy[\s\n\t\r]*[N|n]umber[\s\n\r\t]*)(?P<policy_number>[^\n]*)'
这个特殊情况与第二个或第三个情况相匹配。。不过,它也捕获了保单编号之后的所有内容。什么样的停车条件才能让它抓到号码。我知道有点不对劲,但找不到出路。你知道吗
(?i)[P|p]olicy[\s\n\t\r]*[N|n]umber[\s\n\r\t]*)
电流输出
ABCD000012345othertextfollowsinsameline....
预期产量
ABCD000012345
您不需要指定大小写
p
和n
,因为您已经指定了不区分大小写的。你知道吗而且
\s
已经涵盖了\n
、\t
和\r
。你知道吗验证目的:Regex
另一种解决方案:
出于验证目的:Regex
我更喜欢这个,以防你的短信和保险单号码不同
您可以使用更简单的正则表达式,只需从
"[P|p]olicy\s*[N|n]umber\s*\b([A-Z]{4}\d+)\b.*"
开始查找,然后使用单词boundary\b
如果在你使用
(?:\w+\s+){2}\b([A-Z0-9]+)\b.*
之前总是有两个单词而且
\s
代表[\r\n\t\f\v ]
,所以不需要重复它们,你的[\n\r\s\t]
就是\s
相关问题 更多 >
编程相关推荐