簡體   English   中英

使非貪婪的正則表達式

[英]Regular expression to make non-greedy

我有這樣的文字

EXPRESS      blood| muscle| testis| normal| tumor| fetus| adult
RESTR_EXPR   soft tissue/muscle tissue tumor

現在我只想提取 EXPRESS 行中的最后一項,即adult

我的模式是:

[|](.*?)\n

代碼貪得無厭muscle| testis| normal| tumor| fetus| adult muscle| testis| normal| tumor| fetus| adult muscle| testis| normal| tumor| fetus| adult 我能知道是否有辦法解決這個問題嗎?

在匹配 pipe 字符后跟可選空格后,您可以采用捕獲組值排除匹配 pipe 字符。

如果字符串末尾必須有一個換行符:

\|[^\S\n]*([^|\n]*)\n

解釋

  • \| 匹配|
  • [^\S\n]*匹配不帶換行符的可選空白字符
  • (捕獲組 1
    • [^|\n]*匹配除|之外的可選字符或換行
  • )關閉組 1
  • \n匹配一個換行符

正則表達式演示

或者斷言字符串的結尾:

\|[^\S\n]*([^|\n]*)$

你可以用這個。 它為您節省了之前的空間,處理 \r\n 情況並且是非貪婪的:

\|\s*([^\|])*?\r?\n

在這里測試

暫無
暫無

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

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