我正在嘗試使用正則運算式來匹配除 HTML 標簽之外的任何文本。我為“普通”HTML 代碼找到了這個解決方案:
<[^>]*>(*SKIP)(*F)|[^<]
但是,我的代碼是使用<and>而不是<and編碼的>,我無法修改上面的正則運算式以使其正常作業。
例如,給定文本:
Hi <p class=\"hello\">\r\nthere, how are you\r\n</p>
我需要匹配“嗨”和“你好嗎”。請注意,在此示例中,我還需要匹配不在標簽之間的文本,即“hi”。
更新:由于我使用的是 ruby?? 的 gsub,看起來我什至不能使用 *SKIP 和 *F
更新 2:我試圖不涉及太多細節,但似乎很重要:我實際上需要替換文本中的所有空格,而不是那些屬于標簽的空格,無論是< ... >標簽還是<...>標簽。
uj5u.com熱心網友回復:
您可以使用
text = text.gsub(/(<.*?>|<[^>]*>)|[[:blank:]]/m) { $1 || '_' }
我建議[[:blank:]]而不是\s因為我假設您不想替換換行符。請參閱Ruby 演示。
上面的正則運算式匹配
(<.*?>|<[^>]*>)- 要么<,盡可能少的任何零個或多個字符,和>或<,然后是零個或多個字符>,然后是 a>|- 或者[[:blank:]]- 任何單個水平空白(您也可以[\p{Zs}\t]用來匹配任何 Unicode 水平空白)。
{ $1 || '_' }替換中的塊表示當 Group 1 匹配時,Group 1 值按原樣回傳,否則,_作為水平空白的替換回傳。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366152.html
