Perl正则表达式,其中单词重复的顺序是非顺序的三倍以上

时间:2018-07-19 20:37:34

标签: regex expression word

我目前正用它来找出我的尾巴词

**(?=\b\w{5}\b)\b\w*err\w*\b**

但是我需要一个正则表达式,它将使表达式与表达式的匹配次数超过三次/五次并且是非顺序的。

有什么建议吗?

预先感谢

我没有任何示例数据,因为我拥有的是日志文件。

2018-07-24 10:03:20,610调试[线程3]:[错误]另一个销毁操作刚刚发生

然后是几行...

然后再显示另一则[ERROR]消息

因此,我的搜索将查找ERROR,而Wintail / Notepad ++中的突出显示将突出显示Error并仅在日志超过5条错误消息时才提醒我。

1 个答案:

答案 0 :(得分:0)

由于未提供示例数据和示例字符串,因此我将提供一个具体示例,其中在同一输入字符串中搜索字符串str中的3至5个匹配项。

$String = "str foisdf str wifdoidsfstreoijdsf";

if($String =~ /(str)(.+?\1){2,4}/)
{
    print "Found";
}

在$ String中搜索str。第一个捕获组(str)将捕获\ 1中的文本str,第二个捕获组(.+?\1{2,4})将匹配至少1个字符,然后再与str匹配。

重复2-4次。由于str已在正则表达式中找到一次,因此总匹配次数将为3-5次。

在我的PC上进行了测试和测试,并且可以正常工作。如果您需要非固定文本str,请尝试用正则表达式代替str