簡體   English   中英

Ruby正則表達式:否定匹配

[英]Ruby regular expressions: negative matching

我想知道是否有可能對整個單詞使用否定匹配,以便[^(<em>.*?<\\/em>)] 東西可以匹配 (包括) <em>...</em>之間的文字以外的所有內容<em>...</em>

我當時正在考慮使用負前瞻,但我認為這不會起作用,因為我還需要檢查開頭的<em>

當然,我可以只使用正則表達式,然后從原始文本中減去匹配項,但是我正在尋找更“優雅”的解決方案。

感謝任何幫助

String#split用作否定匹配。 它返回不匹配正則表達式的任何部分的數組。

'XXXXXXXX<em>YYYYYYY</em>ZZZZZZZZ'.split(%r|<em>.*?</em>|)
# => ['XXXXXXX', 'ZZZZZZZZ']

如果想將其返回為字符串,只需join

'XXXXXXXX<em>YYYYYYY</em>ZZZZZZZZ'.split(%r|<em>.*?</em>|).join
 # => 'XXXXXXXZZZZZZZZ'

環顧四周的整個過程是,它不消耗任何輸入。 如果要匹配模式以外的所有內容,則意味着要匹配該模式的前綴和后綴。 為了匹配后綴,您可能想要消耗---並丟棄-不需要的模式。 但是負面的前瞻並沒有消耗。

暫無
暫無

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

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