2017-04-04 65 views
3

如何在正則表達式中將orand組合在一起。如何匹配這種類型的字符串使用和正則表達式?

我們可以在正則表達式(Boo)|(l30o)中做到這一點,並列出所有基本上使用正則表達式的排列。在這裏或正在使用。

我想以任何形式匹配B任何形式的O兩次。類似於,[(B)|(l3)][0 o O]{2}。但是,在這種形式下,它也匹配(0O

O兩次匹配不成問題。

B當試圖匹配多個字符時,匹配是單個字符匹配的問題。

應該匹配: 啵 b0o L300 I3oO B00

所有關鍵詞看起來像啵,即b - {B,b,l3,I3,i3}o - {O, o, 0};

+2

請問您能澄清一些您需要匹配/不匹配的例子嗎? –

+0

@Tarun Maganti, [0 o O] {2}會和0相匹配,因爲你說你想以任何形式匹配o兩次,那麼它有什麼問題? –

+0

O沒有問題。 @ RizwanM.Tuman –

回答

3

你可以在線試用嘗試(?:[bB]|[lIi]3)[0Oo]{2}

  • (?:...)是一個非捕獲組
  • [...]是一個字符類,即它內部的任何字符(根據位置而定的-除外)將被認爲是字面上的意思。 [iIl]比賽iLl,而[(B)|(l3)]不會做你認爲它的作用:它匹配任何(B)|l3)。
  • |手段「或」和匹配整個序列
  • {...}是一個數字量詞(即{2}表示正好兩次)

你也可以使用(?i)你表達的開始,使之不區分大小寫,即表達式將是(?i)(?:b|[li]3)[0o]{2}

+0

如果我想限制字符不敏感到字符串的一部分? –

+1

@TarunMaganti在這種情況下,你可以使用'(?i)'來明星t不區分大小寫部分,'(?-i)'結束,例如'(?i)(?: b | [li] 3)(? - i)[0o] {2}'在比賽中不允許'O'。 – Thomas

1
(B|b|l3|I3|i3)(O|o|0)+ 

()是一組

|是或

+是一個量詞{1,},這意味着1個或多個

+0

哪裏有我使用[]的情況,比如[B(13)],爲什麼在這樣的情況下失敗? –

+1

字符類通常是指定ASCII表中字符範圍的便捷方式,例如[az]。如果只使用單個字母,則[adz]和(a | d如果你想匹配一個集合中的單個字符(它是大類的2倍)。[B(l3)]如果解析完畢,匹配(B | | \ z)。 (| l | 3 | \))你最有可能必須逃避\(\)纔能有效地解析。 – HopefullyHelpful

相關問題