簡體   English   中英

如何重新使用捕獲組來匹配不同的替換選擇?

[英]How to re-use a capturing group to match a different alternation choice?

我有一組單詞和另一組有連詞。 我正在尋找一個匹配任何一個單詞的正則表達式,要求它們之間的連接:

  • 如果是(A|B|C)
  • 並且連詞是(&)
  • 然后匹配A & CC & B甚至A & A
  • 但不匹配A + CACA & D

實際例子:考慮這個與平台無關的正則表達式: /(Huey|Dewey|Louie) and \\1/

我希望它匹配“Huey和Louie”或“Dewey and Huey”,但它只匹配“Huey和Huey”,因為反向引用僅匹配先前匹配的文本。

我可以通過使用/(Huey|Dewey|Louie) and (Huey|Dewey|Louie)/重復自己/(Huey|Dewey|Louie) and (Huey|Dewey|Louie)/但我認為有一種更聰明的方法可以在以后重新使用捕獲組。 那是可行的嗎?

如果您使用Perl(或具有足夠兼容的正則表達式的語言),則可以執行此操作:

/(Huey|Dewey|Louie) and (?1)/

(?N)部分是“遞歸子模式”,與捕獲組N子規則匹配相同的東西。 (這個和后向引用之間的區別如\\N\\N匹配捕獲組匹配的相同字符串(?N)重用正則表達式本身。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM