Python正则表达式: Match start of line,或分号,或字符串开头,无捕获组

标签 python regex

我正在尝试创建一个与以下任一匹配的 Python 正则表达式:

  1. 字符串的开头
  2. 行的开头
  3. 或分号

到目前为止,它必须是一个不消耗字符串的字符串。 找到上述内容后,它会查找可选的空格,然后查找单词 import (已捕获)。

正则表达式(带有 mutline 和全局标志 (mg)):

(?<=^|;)\s*(import)

失败,因为 python 中的后视必须是固定宽度:

import sadfsda; import asdf sdaf 
import asdfas dfasdf

注意:[^]确实回答了这个问题,因为如何指定符合我要求的固定宽度外观。这只是众多失败的尝试之一。

最佳答案

你可以使用

(?<![^;\n])\s*(import)

请参阅regex demo详细信息:

  • (?<![^;\n]) - 负向后查找,与前面没有紧接着 ; 的位置相匹配和一个换行符(LF,换行符)
  • \s* - 零个或多个空格
  • (import) - 第 1 组:import字符串。

\n换行匹配模式是必要的,因为如果 \n 则否定字符类匹配换行符不是类的一部分,因此每当您想要将任何行开头的位置与像这样的负向后查找相匹配时,请将其添加到否定字符类中。

请参阅Python demo :

import re
s='''import sadfsda; import asdf sdaf 
import asdfas dfasdf'''
rx = r'(?<![^;\n])\s*(import)'
print( re.sub(rx, r'{{\g<0>}}', s) )

输出:

{{import}} sadfsda;{{ import}} asdf sdaf 
{{import}} asdfas dfasdf

关于Python正则表达式: Match start of line,或分号,或字符串开头,无捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71236425/

相关文章:

python - 如何使用 gtkcssprovider 为 gtktextview 中的字母着色

Python正则表达式重新编译搜索失败

c - 正则表达式 : end of line in MS visual studio

javascript - 用多个分隔符拆分字符串,保留它们并在双引号中忽略它们

python - 如何在每次不征求许可的情况下将文件上传到另一个用户的谷歌云端硬盘?

python - 如何在Pipeline中使用LabelEncoder和随机森林

python - 将多重处理应用于 pandas 数据框中独特条目类别的最有效方法是什么?

java - 将字符串替换为文本文件的某些部分

python - 在 python 3.7 中检索具有零长度匹配的 re.sub() 的 python 3.6 处理

c# - 如何在 C# 中找出句子中的下一个单词?