如何在 Regex 中将 or
和 and
组合在一起。
我们可以在正则表达式 (Boo)|(l30o)
中执行此操作,并列出所有基本超出使用正则表达式目的的排列。这里或正在使用。
我想匹配任何形式的B
,任何形式的O
两次。类似于 [(B)|(l3)][0 o O]{2}
。但是,在这种形式下,它也匹配 (0O
。
O 两次匹配不是问题。
B 在尝试匹配多字符匹配时与单字符匹配是一个问题。
应该匹配: 嘘 b0o l300 I3oO B00
等等
所有看起来像 Boo 的词,即 b - {B,b,l3,I3,i3}
和 o - {O, o, 0}
;
最佳答案
您可以尝试 (?:[bB]|[lIi]3)[0Oo]{2}
:
(?:...)
是非捕获组[...]
是一个字符类,即其中的任何字符(-
除外,具体取决于位置)将被假定为字面意思(即[iIl]
匹配i
、L
或l
,而[( B)|(l3)]
不会做你想的那样:它匹配任何(
,B
,)
、|
、l
或3
)。|
表示“或”并匹配整个序列{...}
是一个数字量词(即{2}
表示恰好两次)
您还可以在表达式的开头使用 (?i)
使其不区分大小写,即表达式将是 (?i)(?:b|[ li]3)[0o]{2}
.
关于java - 如何使用和在正则表达式中匹配此类字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43200815/