如何构建ICU正则表达式来匹配这种字符串?

时间:2010-12-09 18:04:06

标签: regex string

嗨我需要一个ICU正则表达式,我认为它非常基本,但我不知道如何正确构建它。正则表达式应匹配如下字符串:

font-size: 9pt;
font-size: 15pt;
font-size:2pt;
font-size:22pt;

我正在尝试制作类似这样的东西,但它不起作用:

regex = \bfont\-size: [0-9]{3}pt;\b

我对正则表达式真的很新,所以我不确定我在这里做错了什么。任何帮助深表感谢。

P.S。:有没有人知道一个很好的资源来快速掌握这个问题?

2 个答案:

答案 0 :(得分:1)

font\-size\: ?[0-9]{1,3}pt\;

应该做的伎俩。基本上,逃避所有非字母数字字符(只是为了安全起见)。此外,{1,3}表示重复0到9到1次,而不是总是重复3次。

修改 更新了上面的正则表达式。已移除尾随\b,并使用?将号码前的空格设为可选。

Python演示:

>>> import re
>>> s = """
... font-size: 9pt;
... font-size: 15pt;
... font-size:2pt;
... font-size:22pt;
... """
>>> re.findall("font\-size\: ?[0-9]{1,3}pt\;", s)
['font-size: 9pt;', 'font-size: 15pt;', 'font-size:2pt;', 'font-size:22pt;']

答案 1 :(得分:0)

我在你的正则表达式中看到两个问题:

  1. {3}完全匹配三件事。您可能希望{1,3}匹配1到3.

  2. 我不认为\b会在分号后立即执行您想要的操作。也许你想要\s*(零或更多的空格)。

  3. 如果您想快速学习正则表达式,最好的选择可能是使用regex debugging tool并进行实验。