我有一个这样的正则表达式
/^((.{0}1.*)|(.{1}2.*)|(.{2}3.*)|(.{3}4.*))$/g
这个匹配每个字符串,其中包含几乎一个数字在相同的位置1234。你知道吗
现在我正在尝试构建一个正则表达式,它在1234的相同位置上几乎匹配n个数字。哪个数字匹配并不重要,重要的是n个数字匹配。所以使用AND运算符在这里没有帮助。 一个想法是构建一个正则表达式,在正确的位置匹配每个字符,然后在我的python代码中,我将编写如下内容:
n_matches = len(re.findall(regex, val))
if n_matches == matches_to_hit:
...
但我被困在这里。。你知道吗?你知道吗
更新
我有两个字符串输入。它们总是一个4位数的字符串。数字范围为0-9,所有数字都不同。例如:
我必须检查输入A和输入B是否有n个数字在同一位置
举个例子:
因此,如果n是1,那么regex应该返回metch。如果n>;1,则为否,因为在输入A和输入B中只有数字3位于同一位置
我不确定我是否100%正确地理解了你的答案,但我把它理解为:编写一个正则表达式来匹配一个字符串,“前4个字符正好是4个数字,所有这些数字都不同,字符串中没有其他数字”
这可以通过负的前向和后向引用(和组)来实现。正则表达式如下:
所以我们应该有一个数字
\d
。然后是另一个数字\d
,它与第一个[match](?!\1)
不同。然后是另一个数字\d
,它与前面的两个匹配项(?!(\1|\2))
不同,依此类推。你知道吗以下是完整的正则表达式,添加了空格以便于阅读:
如果需要使它匹配整个字符串和某些特定位置,可以根据需要删除
^
/$
,并在\D
(不是数字)中添加*
、+
或{10}
的量词。你知道吗附言:我建议你阅读这个网站https://www.regular-expressions.info/,在阅读了所有内容并进行了一些练习(顺便说一句,在StackOverflow上回答问题是一个很好的练习方式)之后,我向你保证,你将成为正则表达式大师。你知道吗
PPS:在实际的项目中,我将实现这个w/o正则表达式。你知道吗
相关问题 更多 >
编程相关推荐