Python: 字符串模式匹配

0 投票
5 回答
2547 浏览
提问于 2025-04-16 05:50

我想逐行检查一个文件,看看有没有符合格式的内容,比如 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 在正则表达式字符串前面表示“原始”字符串,所以你不需要在字符串中转义反斜杠。

撰写回答