正则表达式在字符串中任何特定单词之前和之后查找特定单词
Posted
技术标签:
【中文标题】正则表达式在字符串中任何特定单词之前和之后查找特定单词【英文标题】:regex to find a specific word before and after any specific word in string 【发布时间】:2021-11-21 23:38:19 【问题描述】:我需要一个正则表达式,它可以在任何其他特定单词(包括搜索词本身)之前和之后为我提供带有特定单词的字符串。
请注意:开始词和结束词不能是同一个词。
示例
string text = "strat text click my URL MyUrl.com click me end text completed";
正则表达式应该给我一个包含起始词的字符串 click 和结束词是 end 和搜索词是 MyUrl.com
在这里,在这种情况下,上述字符串的输出将是,
click my URL MyUrl.com click me end
我尝试使用以下正则表达式,它返回搜索文本前后各有一个单词的文本
(?:\S+\s)?\SMyUrl.com\S(?:\s\S+)? -> 输出是 URL MyUrl.com 点击
我找不到适合我要求的正则表达式。
【问题讨论】:
【参考方案1】:由于?
,这些部分(?:\S+\s)?
和(?:\s\S+)?
在模式中匹配0 或1 次
如果你想匹配开始和结束模式之间的所有单词,应该有更多的重复,但你不知道中间有多少。
您必须指定开始词和结束词,并将匹配空白字符和非空白字符的部分重复 0 次或更多次以匹配其间的所有单词。
\bclick(?:\s+\S+)*? \S*MyUrl\.com\S*(?:\s+\S+)*? end\b
Regex demo
【讨论】:
以上是关于正则表达式在字符串中任何特定单词之前和之后查找特定单词的主要内容,如果未能解决你的问题,请参考以下文章
XCode Magical Record, MR_findByAttribute - 查找带有特定单词的字符串(正则表达式?)