使用OR运算符的Python正则表达式

探戈

我正在尝试使用正则表达式(RE)解析大量文本文件。我试图从这些文件中提取包含'vu'并以换行符'\ n'结尾的文本部分

模式因一个文件而异,因此我尝试使用OR运算符在文件中查找RE的组合但是,我没有找到一种使代码自动化的方法,因此re.findall()函数查找RE的组合。

这是我如何解决此问题的示例,但是显然我仍然无法在re.findall()中同时评估我的正则表达式和OR运算符

import re

def series2string(myserie) :
    myserie2 = ' or '.join(serie for serie in myserie)
    return myserie2

def expression(pattern, mystring) : 
    x = re.findall(pattern, mystring)
    if len(x)>0:
        return 1
    else:
        return 0

#text example
text = "\n\n    (troisième chambre)\n    i - vu la requête, enregistrée le 28 février 1997 sous le n° 97nc00465, présentée pour m. z... farinez, demeurant ... à dommartin-aux-bois (vosges), par me y..., avocat ;\n"

#expressions to look out
pattern1 = '^\s*vu.*\n'
pattern2 = '^\s*\(\w*\s*\w*\)\s*.*?vu.*\n'

pattern = [pattern1, pattern2]
pattern = series2string(pattern)

expression(pattern, text)

注意:我通过在for循环中查找每个模式来解决此问题,但是如果我只使用一次re.findall(),我的代码将运行得更快

马库斯·贾德洛(Markus Jarderot)

Python正则表达式使用|运算符进行替换。

def series2string(myserie) :
    myserie2 = '|'.join(serie for serie in myserie)
    myserie2 = '(' + myserie2 + ')'
    return myserie2

更多信息:https : //docs.python.org/3/library/re.html


各个模式看起来真的很凌乱,所以我不知道什么是错误,什么是故意的。我猜您在几种不同的情况下正在寻找“ vu”一词。

  1. 始终对正则表达式使用Python原始字符串,并以rr'pattern here'为前缀它允许您\在模式中使用Python,而无需尝试将其解释为字符串转义。它直接传递到正则表达式引擎。(参考)
  2. 使用\s匹配空白(空格和换行符)。
  3. 由于您已经有几种替代模式,因此请不要使用()可选。这可能会导致灾难性的回溯,这会使匹配大字符串的速度变慢。
    \(?→交通\(
    \)?→交通\)
  4. {1}什么也没做 它仅重复一次上一个子模式,这与不指定任何内容相同。
  5. \br是无效的。它被解释为\b(ASCII钟形字符)+字母r
  6. '文本字符串的开头有一个引号()。您打算^匹配任何行的开头,或者'是复制/粘贴错误。
  7. 组合模式时的一些错误:

    pattern = [pattern1, pattern2, pattern3, pattern4]
    pattern = series2string(pattern)
    
    expression(re.compile(pattern), text)
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python正则表达式匹配OR运算符

来自分类Dev

python运算符'in'与正则表达式

来自分类Dev

使用 AND NOT 运算符的正则表达式

来自分类Dev

C ++使用正则表达式搜索“正则表达式运算符”

来自分类Dev

Java正则表达式组OR运算符

来自分类Dev

OCaml | 正则表达式运算符

来自分类Dev

正则表达式OR运算符的计算方式

来自分类Dev

Ruby正则表达式:运算符和

来自分类Dev

Bash正则表达式=〜运算符

来自分类Dev

正则表达式分组与重复运算符

来自分类Dev

JavaScript正则表达式OR运算符

来自分类Dev

RFC正则表达式运算符

来自分类Dev

正则表达式运算符(.. | .. ... .. | ..)的顺序

来自分类Dev

mongodb正则表达式中的AND运算符

来自分类Dev

正则表达式中的比较运算符

来自分类Dev

正则表达式不是运算符

来自分类Dev

如何使OR运算符成为正则表达式?

来自分类Dev

改变Ruby正则表达式运算符

来自分类Dev

正则表达式-或运算符

来自分类Dev

正则表达式 Java 运算符

来自分类Dev

如何在正则表达式.Net中使用AND运算符和NOT运算符

来自分类Dev

使用正则表达式如何将“==”或“等于”从 json 转换为 python 并执行正常的比较运算符

来自分类Dev

正则表达式OR运算符在Python中不起作用

来自分类Dev

适用于逻辑运算符的Python正则表达式

来自分类Dev

Python正则表达式从OR运算符的非匹配端返回None

来自分类Dev

正则表达式交替运算符 | 未按预期工作 - Python

来自分类Dev

如何通过ANY数组运算符使用正则表达式

来自分类Dev

无法在mongodb中的$ in运算符中使用正则表达式

来自分类Dev

使用正则表达式后向运算符的scala模式匹配

Related 相关文章

热门标签

归档