繁体   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