Lan*_*ank 6 regex regex-group regex-lookarounds
我正在尝试编写一些正则表达式,以使我可以对捕获组进行隐式查找,以便可以从电子邮件中提取可能的引用。我需要知道如何从某个角度看向第一个空白。如果找到一个数字,我不希望提取引用。
我已经达到如下所示。我有2个捕获组-'PreRef'和'Ref'。如果'PreRef'包含数字,我不希望找到'Ref'匹配项。到目前为止,我只检查冒号前面的字符是否为数字。
(?<PreRef>\S+)(?<![\d]):(?<Ref>\d{5})
Run Code Online (Sandbox Code Playgroud)
此处的“参考”匹配为12345:
This is a reference:12345
Run Code Online (Sandbox Code Playgroud)
但是不是这里(“引用”一词中有5):
This is not a ref5rence:12345
Run Code Online (Sandbox Code Playgroud)
小智 3
您可以从类中排除数字\S,然后用空格边界包围表达式
,然后使用 viola ..
(?<!\S)(?<PreRef>[^\s\d]+):(?<Ref>\d{5})(?!\S)
https://regex101.com/r/JrU7Kd/1
解释
(?<! \S ) # Whitespace boundary
(?<PreRef> [^\s\d]+ ) # (1), Not whitespace nor digit
: # Colon
(?<Ref> \d{5} ) # (2), Five digits
(?! \S ) # Whitespace boundary
Run Code Online (Sandbox Code Playgroud)