嗨我需要一个ICU正则表达式,我认为它非常基本,但我不知道如何正确构建它。正则表达式应匹配如下字符串:
font-size: 9pt;
font-size: 15pt;
font-size:2pt;
font-size:22pt;
我正在尝试制作类似这样的东西,但它不起作用:
regex = \bfont\-size: [0-9]{3}pt;\b
我对正则表达式真的很新,所以我不确定我在这里做错了什么。任何帮助深表感谢。
P.S。:有没有人知道一个很好的资源来快速掌握这个问题?
答案 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)
我在你的正则表达式中看到两个问题:
{3}
完全匹配三件事。您可能希望{1,3}
匹配1到3.
我不认为\b
会在分号后立即执行您想要的操作。也许你想要\s*
(零或更多的空格)。
如果您想快速学习正则表达式,最好的选择可能是使用regex debugging tool并进行实验。