RegExp在模式后的空格和文本上不匹配
我有一个多行模式,我扫描一个字符串。目标是匹配组成帐号的一系列数字。如果字符串/行以http | https开头,则模式可以忽略该行。我忽略了整个模式中的案例敏感性。我仅在数字周围创建边界。数字的长度范围从12位到19位 以下是正则表达式:RegExp在模式后的空格和文本上不匹配,regex,Regex,我有一个多行模式,我扫描一个字符串。目标是匹配组成帐号的一系列数字。如果字符串/行以http | https开头,则模式可以忽略该行。我忽略了整个模式中的案例敏感性。我仅在数字周围创建边界。数字的长度范围从12位到19位 以下是正则表达式: (?mi)^(?!https?:).*(\b(50[0-9]{10,17}))$ 示例测试: 501234567890 嗨,鲍勃,这是你要的:501234567890。你收到了吗 嗨,史蒂文,这是你要的501234567890,收到了吗 (?#这应该被忽
(?mi)^(?!https?:).*(\b(50[0-9]{10,17}))$
示例测试:
- 501234567890
- 嗨,鲍勃,这是你要的:501234567890。你收到了吗李>
- 嗨,史蒂文,这是你要的501234567890,收到了吗
- (?#这应该被忽略)
- (?#这应该被忽略)
- 这是我的公司账号:501234567890
- 501234567890
Russ只需将
$
替换为单词边界\b
:
(?mi)^(?!https?:).*(\b(50[0-9]{10,17}))\b
您是否需要正则表达式模式末尾的
$
?您是正确的。我测试了这个变化,它正是我所需要的。你能解释一下原因吗?我有几种类似的模式,我需要理解这种变化背后的理论。模式前的\b表示仅匹配整个“单词”。“边界”一词是否需要像“后面和结尾”这样的指称?谢谢您的帮助。@rray:word boundary\b
是一种零长度断言,它匹配单词字符\w
(或[A-zA-Z0-9\
)和非单词字符\w
(或[^A-zA-Z0-9\
)之间的“边界”。请参见此处的更多信息: