相关疑难解决方法(0)

使用Python将一行与多个正则表达式匹配

有没有办法看一行是否包含与一组正则表达式模式匹配的单词?如果我有[regex1, regex2, regex3],并且我想看一条线是否匹配其中任何一条,我该怎么做?现在,我正在使用re.findall(regex1, line),但它一次只匹配1个正则表达式.

python regex

16
推荐指数
3
解决办法
3万
查看次数

python正则表达式:匹配多个正则表达式之一

我有一个字符串和三个要匹配的模式,我使用python re包。具体来说,如果找到模式之一,则输出“不喜欢”,否则,输出“喜欢”。有关这三种模式的简要信息:

模式1:检查字符串中的所有字符是否均为大写字母

模式2:检查连续字符是否相同,例如 AABB...

pattern3:检查是否XYXY存在模式,X并且Y可以相同,并且该模式中的字母不需要彼此相邻。

当我分别编写模式时,程序将按预期运行。但是,当我使用交替组合三种模式时|,结果是错误的。我已经检查了stackoverflow帖子,例如,在这里这里。提供的解决方案对我不起作用。

这是可以正常工作的原始代码:

import sys
import re

if __name__ == "__main__":
    pattern1 = re.compile(r"[^A-Z]+")
    pattern2 = re.compile(r"([A-Z])\1")
    pattern3 = re.compile(r"([A-Z])[A-Z]*([A-Z])[A-Z]*\1[A-Z]*\2")

    word = sys.stdin.readline()
    word = word.rstrip('\n')
    if pattern1.search(word) or pattern2.search(word) or pattern3.search(word):
        print("Dislikes")
    else:
        print("Likes")
Run Code Online (Sandbox Code Playgroud)

如果我使用以下代码将3种模式组合为一种,则可能是错误的:

import sys
import re

if __name__ == "__main__":

    pattern = r"([A-Z])[A-Z]*([A-Z])[A-Z]*\1[A-Z]*\2|([A-Z])\1|[^A-Z]+"

    word = sys.stdin.readline()

    word = word.rstrip('\n')
    if re.search(word, pattern):
        print("Dislikes")
    else:
       print("Likes") …
Run Code Online (Sandbox Code Playgroud)

python regex

5
推荐指数
1
解决办法
8749
查看次数

preg_replace 一次替换多个模式

我在 $subject 上应用的替换很少,但我不想让旧替换 #(1 .. i-1) 的输出与当前替换 #i 匹配。

$subject1 = preg_replace($pat0, $rep0, $subject0);
$subject2 = preg_replace($pat1, $rep1, $subject1);
$subject3 = preg_replace($pat2, $rep2, $subject2);
Run Code Online (Sandbox Code Playgroud)

我尝试将一个preg_replace与数组用于模式和替换,希望它能够立即实现;但结果证明只是连续调用简单的preg_replace(当然有一些优化)

在我阅读了preg_replace_callback 之后,我想这不是一个解决方案。

有什么帮助吗?

php regex preg-replace preg-replace-callback

3
推荐指数
1
解决办法
4516
查看次数

标签 统计

regex ×3

python ×2

php ×1

preg-replace ×1

preg-replace-callback ×1