2

我需要匹配字符串onetwo前后的5个字符

在输入中包含以下文本

Lorem Ipsum 只是印刷和排版行业的一个虚拟文本。自 1500 年代以来,Lorem Ipsum 一直是行业的标准虚拟文本,当时一位不知名的印刷商采用了一种类型的厨房并将其加扰以制作两本书的类型样本。它不仅经历了五个世纪,而且经历了电子排版的飞跃,基本保持不变。它在 1960 年代随着包含 Lorem Ipsum 段落的 Letraset 表的发布而流行起来,最近还随着 Aldus PageMaker 等桌面出版软件(包括 Lorem Ipsum 的版本)而普及。

输出应该是

  • 妈妈一个文本
  • imen 两本书

正则表达式应该与ruby​​ 中的scan方法一起使用

4

2 回答 2

11

这个正则表达式应该工作:

.{5}(?:one|two).{5}

如果你想要单词边界,那么:

.{5}\b(?:one|two)\b.{5}

现场演示(Ruby):http ://www.rubular.com/r/AcDOFxMx31

于 2013-08-26T07:44:35.190 回答
0

不知道 ruby​​ 语法,但一般来说,以下应该可以工作:

 .....(one|two).....

在某些语言中,您可以执行类似的操作

   .{5}(one|two).{5} 

但这并不像上一行那样确认

为了输出整个选择,您需要在所有选择周围加上大括号并选择第二个结果(正则表达式会将第一个查找设置为 one\two 并将第二个设置为查找),例如

 (.....(one|two)....)

$1 = "一" $2 = "bla 一 bla"

编辑 1 = 示例编辑 2 = 错别字

于 2013-08-26T07:44:31.530 回答