正则表达式 - 捕获匹配之间的文本,如果没有匹配,则捕获所有

标签 r regex

我对正则表达式很陌生,我正在 try catch 两个字符串之间的文本。但如果字符串不存在,我想捕获所有文本。

这是一个例子:

Report #1: Observations: A cat is stretching. Conclusions: This cat is flexible.

我可以使用以下代码来捕获“观察”和“结论”之间的文本:

(?:(?i)observations)(.*)(?:(?i)conclusions)

但是如果另一个文本写道:

Report #1: Observations: A cat is stretching. This cat is flexible.

我想捕获“观察”之后的所有内容。

或者如果起始字符串“Observations”不存在:

Report #1: A cat is stretching. Conclusions: This cat is flexible.

我想捕获从开始到结束的字符串“结论”。

我想条件正则表达式可能有帮助?

谢谢!

最佳答案

一行:

ex <- c(
  "Report #1: Observations: A cat is stretching. Conclusions: This cat is flexible.",
  "Report #1: Observations: A cat is stretching. This cat is flexible.",
  "Report #1: A cat is stretching. Conclusions: This cat is flexible."
)

gsub("(^.*observations|conclusions.*$)", "", ex, ignore.case = TRUE)
# [1] ": A cat is stretching. "                     
# [2] ": A cat is stretching. This cat is flexible."
# [3] "Report #1: A cat is stretching. "            

您可能需要边界或 G5W 建议的单词之前/之后的空格。单词边界看起来像这样,给定示例文本具有相同的输出:

gsub("(^.*\\bobservations\\b|\\bconclusions\\b.*$)", "", ex, ignore.case = TRUE)

关于正则表达式 - 捕获匹配之间的文本,如果没有匹配,则捕获所有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45177085/

相关文章:

r - 如何根据R基矩阵散点图中的因子对数据进行着色?

根据条件删除熔化数据

python - 正则表达式搜索无法终止

r - R 中的网页抓取

r - 如何使用 `sub` 更改值

php - 从 HTML 文本中提取特定文本

php - 匹配 HH :MM:SS time format in php? 的正则表达式

c# - C# .NET 中的特定正则表达式

regex - 使用 RegEx 和 Replace 在 MS-Access 中使用 USPS 缩写更新地址字段

r - 从密度对象(或更广泛地从一组数字)生成随机数