我正在嘗試匹配一對特殊字符,同時從匹配中排除封閉的內容。例如,~some enclosed content~
應該只匹配完全~
省略的對。some enclosed content
我只能使用 vanilla PCRE,并且不能選擇捕獲組。
我對整個字串的匹配標準是~([^\s].*?(?<!\s))~
. 分別匹配第一個和第二個~
也是可以接受的。
uj5u.com熱心網友回復:
查看您的模式,您希望在打開之后立即~
使用非空白字符,并在關閉之前使用非空白字符~
由于這些是分隔符,并且非空白字符也不應該是~
其本身,您可以使用:
~(?=[^~\s](?:[^~\r\n]*[^\s~])?~)|(?<=~)[^\s~](?:[^~\r\n]*[^\s~])?\K~
解釋
~
從字面上匹配(?=
正向前瞻,斷言右邊是[^~\s]
匹配一個非空白字符,除了~
(?:
非捕獲組[^~\r\n]*[^\s~]
匹配重復除換行符以外的任何字符或~
后跟非空白字符,除了~
)?
關閉非捕獲組并使其可選(也匹配單個 char~a~
)~
從字面上匹配
)
關閉前瞻|
或者(?<=~)
~
正面向后看,向左斷言[^\s~]
匹配一個非空白字符,除了~
(?:[^~\r\n]*[^\s~])?
與前瞻中相同的可選模式\K
忘記到目前為止匹配的內容~
從字面上匹配
正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/518504.html
標籤:正则表达式聚合酶链反应