簡體   English   中英

為什么這個正則表達式選擇括號和之后雖然我使用前瞻

[英]Why this Regex selects parenthesis and after though I use look ahead

我使用這個正則表達式

/\.(.+)?(?=(\(?)|\r\n)/gi

part1.part2
part1.part2(part3) part4

在這兩種情況下我只想要 match.part2

但在第二種情況下,我得到.part2(part3) part4

在此處輸入圖像描述

您應該使用.+?使.+部分不貪婪。 ,否則它還將捕獲您希望在前瞻部分中看到的左括號。

此外,在第二部分中,不要將\(設為可選,否則您的前瞻中沒有任何內容可以匹配。

最后,不要匹配\r\n ,而是行尾錨$m標志的組合(以便它匹配每行的結尾而不是整個輸入)。

所以:

\.(.+?)(?=\(|$)

正則表達式101鏈接

您將匹配中的括號視為. 也可以匹配( .

該模式將匹配第一個點之后的行的 rest 而不會回溯到(因為前瞻中的括號是可選的\(?並且斷言將為真。

您可以在匹配時使用不交叉括號或換行符的否定字符 class

\.([^()\r\n]+)

正則表達式演示

暫無
暫無

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

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