![](/img/trans.png)
[英]python regular expression to check start and end of a word in a string
[英]Python regular expression to check start string is present or not
我试图写一个正则表达式,它应该检查该行的开始字符串并计算该行中存在的一些字符串。
示例: File.txt
# Compute
[ checking
a = b
a
a=b>c=d
迭代此文件,并忽略以下情况的行
我的状况:
(line.startswith("[") or line.startswith("#") or line.count("=") > 1 or '=' not in line)
我需要在正则表达式中重新编写上述条件。
尝试以下
re.search("^#",line)
re.search("^/[",line)
如何编写此正则表达式检查行以“#”或“ [”等条件开头
对于第一套startswith
,可以使用条件re.match
:
if re.match(r'[\[#]', text):
...
对于第二个条件,可以使用re.findall(如果需要计数):
if len(re.findall('=', text)) != 1:
...
您可以将上面的两个与and
组合在一起,如下所示:
if re.match(r'[\[#]', text) and len(re.findall('=', text)) != 1:
...
如果您确实希望使用单数正则表达式,则可以使用以下模式;
^[^#\[][^=]*?=[^=]*?$
它将匹配所有不符合您在答案中指定的逻辑的内容-因此将仅提取不符合您提供的逻辑的内容,因此将忽略所有具有指定条件的行。 这种单一模式可以节省您将python逻辑与正则表达式混合使用的过程,这可能会更加一致。
说明:
^
锚定到字符串的开头 [^#\\[]
确保行首没有[
或#
[^=]*?
懒惰地匹配除=
以外的任何其他任何内容 =
完全匹配一个=
[^=]*?
懒惰地匹配除=
以外的任何其他任何内容 $
字符串锚的结尾。 例如,如果您正在运行bash来提取所有匹配的行,则可以将其与grep
一起使用,从而忽略所有所需的行,或者使用如下所示的简单python脚本;
import re pattern = re.compile('^ [^#[] [^ =] ?= [^ =] ?$')
# For loop solution
with open('test.txt') as f:
for line in f:
if pattern.match(line):
print(line)
# Alternative one-line generator expression;
with open('test.txt') as f:
print('\n'.join((line for line in f if pattern.match(line))))
对于给定的输出文件,两个都将打印出来;
a = b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.