我对正则表达式很陌生,我正在 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/