Python正则表达式寻找字符串

时间:2012-06-26 13:14:35

标签: python python-3.x

我有一个文本文件,其文字如下所示

  

Format = {Window_Type =“Tabular”,Tabular = {Num_row_labels = 10             }             }

我需要在文本文件中查找Num_row_labels> = 10。我如何使用Python 3.2正则表达式做到这一点? 感谢。

4 个答案:

答案 0 :(得分:1)

假设数据格式如上,并且数字中没有前导0:

Num_row_labels=\d{2,}

一个更自由的正则表达式允许任意空格,仍假设没有前导0:

Num_row_labels\s*=\s*\d{2,}

一个更自由的正则表达式,允许任意空格,并允许前导0:

Num_row_labels\s*=\s*0*[1-9]\d+

如果你需要捕捉这些数字,只需用括号\d{2,}围绕[1-9]\d+(第1和第2个正则表达式)或()(第3个正则表达式)并在第1个引用它捕获组。

答案 1 :(得分:0)

看起来像:

Num_row_labels=[0-9]*[1-9][0-9]+

使用示例:

if re.search('Num_row_labels=[0-9]*[1-9][0-9]+', line):
   print line

正则表达式[0-9]*[1-9][0-9]+表示字符串中的字符必须至少为

  • 正则表达式中1到9([1-9],符号类[]的一位数表示此处可以是括号中指定范围内的任何符号;
  • 和至少一个从0到9的数字(但它可以更多)([0-9]+,正则表达式中的+符号表示前面的符号/表达式可以是重复一次或多次)。

在这些数字之前可以是任何其他数字([0-9]*,这意味着任何数字,0或更多次)。如果您已有两位数字,则之前可以包含任何其他数字 - 无论如何,该数字将大于或等于10.

答案 2 :(得分:0)

正则表达式为Num_row_labels=[1-9][0-9]{1}.*

现在您可以使用re python模块(take a look here)来分析您的文本并提取那些

答案 3 :(得分:0)

使用:

match = re.search("Num_row_labels=(\d+)", line)

(\d+)匹配至少一个十进制数字(0-9)并捕获作为一组匹配的所有数字(组存储在re.searchre.match返回的对象中,我在这里分配给match。要访问该组并与10进行比较,请使用:

if int(match.group(1)) >= 10:
    print "Num_row_labels is at least 10"

这将允许您轻松更改阈值的值,而不像正则表达式中的所有内容的答案。另外,我认为这更具可读性,因为很明显你将值与10进行比较,而不是匹配正则表达式中的非零数字,后跟至少一个其他数字。上面的代码是要求匹配的第一个组(match.group(1)返回由\d+匹配的字符串),然后,通过调用int(),转换字符串到整数。然后将int()返回的整数与10进行比较。