簡體   English   中英

正則表達式匹配所有內容,直到其中包含異常的模式

[英]Regex to match everything until pattern with an exception in it

這是我的正則表達式

\d+%[^\.][^0-9]*?((?!original).)percentage*

我希望它從一個百分比(即 10%)匹配到單詞百分比

  • 10%“隨便”百分比

除非它包含“原始”一詞:

  • 10% 原始百分比

因此,“無論”在“百分比”一詞之前可以是任何東西,除非他在其中包含“原始”一詞。

我已經能夠得到我的正則表達式,但它只有在“百分比”位於新行的開頭時才能正常工作

在某些情況下,10% 的銷售額以原始百分比開頭 --> 我的正則表達式與此字符串匹配,但我不想這樣做,因為它包含單詞“original”

10% 的銷售額以一定的百分比開始 --> 我的正則表達式匹配這個字符串,沒關系,因為它不包含“原始”這個詞

原來的10%
銷售百分比更高-->我的正則表達式與此字符串不匹配,這沒關系,因為它包含單詞“original”(可能是因為新行以百分比開頭?)

原銷售額的 10%
是那個百分比 - >我的正則表達式與這個字符串匹配,但我不想因為它包含單詞“original”

如果我的解釋有點奇怪,我很抱歉,英語不是我的第一語言。

謝謝!!!

您必須重復這部分((?.original).)並省略* after percent percentage*因為它可以選擇重復e字符。

然后,如果您不想匹配兩者之間的數字,則可以使用[^\d\r\n]而不是.

\d+%[^.](?:(?!original\b)[^\d\r\n])*\bpercentage\b

模式匹配:

  • \d+%匹配 1+ 個數字和%
  • [^.]匹配除點以外的任何字符(注意這是廣泛匹配,您也可以使用空格代替)
  • (?:非捕獲組
    • (?!original\b)[^\d\r\n]當 wat 直接位於右側時,匹配除數字或換行符之外的任何字符不是original字符
  • )*關閉組並重復 0+ 次
  • \bpercentage\b匹配percentage

正則表達式演示

暫無
暫無

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

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