【问题标题】:Trying to find three (exactly) consecutive copies of whatever text is contained in whatever variable试图找到包含在任何变量中的任何文本的三个(完全)连续副本
【发布时间】:2019-04-06 16:15:57
【问题描述】:

家庭作业问题。也许我不明白这个问题: RegEx - whatever 变量中包含的任何文本的三个连续副本。

我试过这个: 在变量 whatever 中,我尝试了 2 个副本和 4 个副本。这两个正确返回false。但是3副本版本也返回false,当它应该是true。

whatever = "blahblahblah"
re.search("blah{3}", whatever)

我很确定这是我需要走的路,但 RegEx 是必需的。

澄清
需要这样设置:
whatever = "blah" re.search(whatever{3}, "blahblahblah")

也就是说,re.search 需要使用变量 whatever 来让文本模式在给定的字符串中进行搜索。我希望这更有意义。我仍在努力。

re.search(whatever{3}, "blahblahblah") re.search(whatever, "blahblahblah")

我不确定查找变量(值)是否存在 3 次的语法。

编辑
随便=“废话”
re.search(whatever{2}, "blahblahblahblah") 返回 true
{2,2} 也不起作用。这些是我迄今为止最好的猜测。

【问题讨论】:

  • blah{3} 匹配blahhh 你的意思是(?:blah){3}
  • 是的,我需要确认任何文本的三个连续副本。所以 2 和 4 副本应该返回 false。我曾考虑过“blahhh”错误,但尝试 [blah]{3} 无济于事(语法错误)

标签: regex python-3.x string


【解决方案1】:

从您更新的帖子中,您似乎想要匹配变量中包含的任何单词,完全 三次次,否则如果该变量出现,则匹配失败一次或两次或四次或五次或更多次。

让你的变量词为blah,那么你需要使用这个正则表达式,

(?<!blah)(?:blah){3}(?!blah)

这里(?:blah){3} 将匹配blah 恰好3 次,如果匹配的单词前面有blah,则此(?&lt;!blah) 否定查找将失败匹配,如果@ 则此(?!blah) 否定查找将失败匹配987654330@ 后面是匹配项。

Demo

这是一段 Python 代码,

import re

arr = ['aablahaa','aablahblahaa','aablahblahblahaa','aablahblahblahblahaa','aablahblahblahblahblahaa']

whatever = "blah"
reg = r"(?<!{})(?:{}){}(?!{})".format(whatever,whatever,'{3}',whatever) # construct regex dynamically using whatever word

for s in arr:
 if re.search(reg, s):
  print(s, '-->', 'Matched')
 else:
  print(s, '-->', "Didn't Matched")

打印此内容,显示仅匹配包含 blah 的字符串 3 次,其余全部失败。

aablahaa --> Didn't Matched
aablahblahaa --> Didn't Matched
aablahblahblahaa --> Matched
aablahblahblahblahaa --> Didn't Matched
aablahblahblahblahblahaa --> Didn't Matched

【讨论】:

  • 这是一个很好的开始,但是如果有 4 个副本就会失败。
  • @SadieRose:如果您希望它至少匹配三个或更多,那么只需将其更改为 (.+)\1{2,} Demo
  • 实际上,这行不通。请参阅上面的更新。谢谢
  • @SadieRose:好的,我想你的问题现在更清楚了。让我更新我的答案,看看这是否是你要找的。现在据我所知,只有且只有三个匹配项应该匹配,而 2 或 4 应该匹配失败。
  • 所以,查看您的代码:(.+)\1{2},(.+) 应该与变量字符串匹配。
猜你喜欢
  • 1970-01-01
  • 2014-06-10
  • 2017-06-30
  • 2021-10-03
  • 2013-07-05
  • 2022-01-08
  • 2012-09-13
相关资源
最近更新 更多