我正在嘗試匹配一對特殊字符,同時從匹配中排除封閉的內容。例如,~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
標籤:正则表达式聚合酶链反应
