如何检查字符串是否包含方括号内的数字

时间:2018-01-05 02:59:47

标签: python regex

我正按名称分析文件。

  • 我想排除方括号内包含数字的文件。
  • 我想保留包含方括号内文字的文件。

要排除的示例文件名:

Kickloop [124].wav

要包含的示例文件名:

Boomy [Kick].wav

我的代码目前忽略所有文件名,包括方括号。

def contains_square_brackets(file):
    if ("[" in file) and ("]" in file):
        return True

问题:是否有正则表达式来实现我的目标?

3 个答案:

答案 0 :(得分:4)

正则表达式r'\[\d+\]'会对您有所帮助。如果使用正确,它将识别包含一个或多个数字的方括号的字符串。

示例:

>>> import re
>>> def has_numbers_in_square_brackets(s):
...     return bool(re.search(r'\[\d+\]', s))
... 
>>> has_numbers_in_square_brackets('Hello')
False
>>> has_numbers_in_square_brackets('Hello[123]')
True
>>> has_numbers_in_square_brackets('Hello[dog]')
False

答案 1 :(得分:0)

使用pythons stdlib RealmObject模块进行正则表达式匹配。

什么是正则表达式?

正则表达式是一种特殊的字符序列,可帮助您使用模式中保存的专用语法来匹配或查找其他字符串或字符串集。

如何使用re模块进行正则表达式匹配?

您可以使用此http://servername/serverupdates/deploy/Program%20Files/来帮助您进一步理解。

您正在寻找的模式是re,这意味着在开始和结束的方括号内寻找一个恒定的数字流。

但这将是我使用该模块解决您的问题的方法:

\[\d+\]

答案 2 :(得分:0)

<强>代码:

import re

re_pattern = '\[(\d*)\]'
prog = re.compile(re_pattern)

teststrings = ['Kickloop [124].wav', 'Kickloop [aaa].wav']

for teststring in teststrings:
    result = prog.search(teststring)

    if result is None:
        print(teststring + ' no match')
    else:
        print(teststring + ' matched')

<强>输出:

Kickloop [124].wav matched
Kickloop [aaa].wav no match      

更多阅读:https://docs.python.org/3/library/re.html