我有以下正则表达式
(?i)(\bl\b|\bline\b)(\s*)(555)
我正在尝试匹配字符串Line555
。该表达式适用于匹配line 555
或Line 555
,但是,如果我删除两者之间的空格,它将不再起作用。任何人都可以解释原因吗?
提前谢谢
答案 0 :(得分:3)
由于\s
模式之前的word boundary,e
中的5
和Line555
之间没有字边界。只是为了提醒哪些位置与单词边界匹配:
有三种不同的职位符合词边界:
- 在字符串中的第一个字符之前,如果第一个字符是单词字符。
- 在字符串中的最后一个字符之后,如果最后一个字符是单词字符。
- 字符串中的两个字符之间,其中一个是单词字符,另一个不是单词字符。
所以,使用
(?i)\b(l(?:ine)?)(\s*)(555)
见this regex demo。如果您对这些子匹配不感兴趣,请删除捕获组。
<强>详情
(?i)
- 不区分大小写的修饰符\b
- 领先的单词边界(l(?:ine)?)
- 第1组:l
,然后是可选的ine
子字符串(\s*)
- 第2组:0 +空格(555)
- 第3组:555
substring。