Mic*_*ryl 4 regex word-boundary word-boundaries
我正在尝试使用正则表达式模式(在Java中)来查找3位数的序列,并且连续只有3位数.4位数不匹配,2位数不匹配.
对我来说,显而易见的模式是:
"\b(\d{3})\b"
Run Code Online (Sandbox Code Playgroud)
这与许多源字符串案例相匹配,例如:
">123<"
" 123-"
"123"
Run Code Online (Sandbox Code Playgroud)
但它不会与源字符串"abc123def"匹配,因为c/1边界和3/d边界不算作\ b类所期望的"字边界"匹配.
我本来期望解决方案是添加一个包含非数字(\ D)和字边界(\ b)的字符类.但这似乎是非法语法.
"[\b\D](\d{3})[\b\D]"
Run Code Online (Sandbox Code Playgroud)
有没有人知道我可以使用什么作为一个表达式来提取"123"的源字符串情况,如:
"abc123def"
Run Code Online (Sandbox Code Playgroud)
我很感激任何帮助.是的,我意识到在Java中必须双重转义代码,如\ b到\ b,但这不是我的问题,我不想将此限制为Java人员.
你应该对这些情况使用lookarounds:
(?<!\d)(\d{3})(?!\d)
Run Code Online (Sandbox Code Playgroud)
这意味着匹配3个未跟随且前面有数字的数字.