Python: 字符串模式匹配
我想逐行检查一个文件,看看有没有符合格式的内容,比如 any_string=any_string。这个格式必须严格,没有空格或其他任何东西。每一行必须包含一个字符串,然后是一个“=”符号,接着是另一个字符串,不能有其他内容。有人能帮我写出在Python中找到这个格式的代码吗?=]
pattern='*\S\=\S*'
我有这个,但我很确定它是错的,哈哈。
5 个回答
1
pattern = r'\S+=\S+'
如果你想要能够获取左右两边的内容,可以添加捕获组:
pattern = r'(\S+)=(\S+)'
如果你不想让这一行出现多个等号(这样会导致一些奇怪的情况),你可以使用这个:
pattern = r'[^\s=]+=[^\s=]+'
1
自从Python 2.5版本以来,我更喜欢用这个方法来分割字符串。如果你不喜欢空格,可以直接检查一下。
left, _, right = any_string.partition("=")
if right and " " not in any_string:
# proceed
另外,学习正则表达式总是有好处的。
4
不知道你是否在找两边=
符号的值相同的行。如果是这样的话,可以使用:
the_same_re = re.compile(r'^(\S+)=(\1)$')
如果值可以不同,那就用
the_same_re = re.compile(r'^(\S+)=(\S+)$')
在这个正则表达式中:
^
表示行的开头$
表示行的结尾\S+
表示一个或多个非空格字符\1
表示第一个分组
r
在正则表达式字符串前面表示“原始”字符串,所以你不需要在字符串中转义反斜杠。