Regex 如何构建一个ICU正则表达式来匹配这种字符串?
嗨,我需要一个ICU正则表达式,我认为这是非常基本的,但我不知道如何建立它的权利。正则表达式应该匹配如下字符串:Regex 如何构建一个ICU正则表达式来匹配这种字符串?,regex,string,Regex,String,嗨,我需要一个ICU正则表达式,我认为这是非常基本的,但我不知道如何建立它的权利。正则表达式应该匹配如下字符串: font-size: 9pt; font-size: 15pt; font-size:2pt; font-size:22pt; 我正试着做这样的东西,但没用: regex = \bfont\-size: [0-9]{3}pt;\b 我对regex很陌生,所以我不确定我在这里做错了什么。非常感谢您的帮助 旁白:有人知道一个好的资源来掌握这个快速的窍门吗?font-size\:?[0
font-size: 9pt;
font-size: 15pt;
font-size:2pt;
font-size:22pt;
我正试着做这样的东西,但没用:
regex = \bfont\-size: [0-9]{3}pt;\b
我对regex很陌生,所以我不确定我在这里做错了什么。非常感谢您的帮助
旁白:有人知道一个好的资源来掌握这个快速的窍门吗?
font-size\:?[0-9]{1,3}pt\代码>
我们应该做到这一点。本质上,转义所有非字母数字字符(为了安全起见)。另外,{1,3}
表示从1到3次重复0-9,而不是总是重复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;']
我发现您的正则表达式存在两个问题:
{3}
正好匹配三件事。您可能希望{1,3}
匹配1到3
我不认为\b
会在分号后面做你想做的事。也许您需要类似于\s*
(零个或更多空格)的内容
如果你想快速学习正则表达式,最好的办法可能是使用一个函数和一个实验。太好了,谢谢!我该如何改变它来匹配这种字符串,但要使用十进制数?e、 g.字体大小:9.5pt;我试过:font \-size\:?[0-9]{1,3}(\.[0-9]+)?pt\;但它不起作用。这太令人沮丧了……一个非常简单的方法是font \-size\:?[0-9\.]{1,3}pt\代码>,但它也会匹配9.5.2pt之类的东西。(编辑:实际上它不匹配9.5.2,因为它只匹配3个字符,呵呵。)你的正则表达式没有问题,也许你用错了。谢谢你的时间和帮助!你是对的,我用错了。现在可以了。