包括下一个句点或逗号之前的所有内容(包括 "ca.")

include everything (including "ca.") up to next period or comma

我将使用 regex101.com 中使用的语法,但我的代码在 R 中。

取以下字符串:

a) LVEF estimated to be highly impaired (ca. 20 %). blabla
b) LVEF highly impaired. blabla

我的正则表达式

(?=LVEF)([^,|.]*)

returns

a) LVEF estimated to be highly impaired (ca
b) LVEF highly impaired

我可以包含 "ca." 但排除所有其他“.”吗?

谢谢!

如果支持正后向 (?<=,您可以添加一个可选部分来匹配一个点,前提是前面是 ca

\bLVEF\b[^.]*(?:(?<=ca)\.)?

说明

  • \bLVEF\b 在字边界之间匹配 LVEF
  • [^.]* 匹配 0 次以上出现的除点以外的任何字符
  • (?:非捕获组
    • (?<=ca)\.正向后视,断言左边是ca,然后匹配一个.
  • )?关闭非捕获组并使其可选

Regex demo

编辑:

如果你想匹配 (ca. 20 %) 你可以匹配除点以外的任何字符或匹配一个点断言直接在左边的是 ca

\bLVEF\b[^.]*(?:(?<=ca)\.[^.]*)?
  • \bLVEF\b 匹配 LVEF
  • [^.]* 匹配 0 次以上出现的除点以外的任何字符
  • (?:非捕获组
    • (?<=ca)\. 只匹配前面有 ca
    • 的点
    • [^.]* 匹配除点以外的任何字符的尾随 0+ 次出现
  • )? 关闭组并使其可选

Regex demo