求助:编写正则表达式匹配包含(34)的名称特定模式
解决正则匹配「任意名称+(34)」的问题
嘿,我来帮你搞定这个正则匹配的坑!你之前用的[A-z (34)]*之所以会匹配到Adam siva (这类不符合要求的内容,主要有这几个问题:
A-z的范围其实包含了不少非字母符号(比如[、\、_这些),不是你想要的仅匹配名称里的字母和空格- 这个表达式没有强制要求必须以
(34)结尾,只要包含括号、3、4这些字符的任意组合都能被匹配,自然会抓到不完整的片段 *表示零次或多次匹配,甚至空字符串都能被匹配到,这显然不是你要的
正确的正则表达式
根据你的需求,要提取**前面是任意由字母和空格组成的名称,后面必须紧跟(34)**的内容,推荐用这个正则:
[A-Za-z\s]+\(34\)
如果是要匹配整行内容(确保一行里只有符合要求的内容,没有其他多余字符),可以加上行首尾锚点:
^[A-Za-z\s]+\(34\)$
正则各部分解释
[A-Za-z\s]+:匹配至少一个大小写字母或空格,对应你说的「任意名称」部分(+确保名称不能为空)\(34\):因为(和)是正则里的特殊元字符,需要用\转义,这样就能精确匹配字面意义的(34)结尾
测试效果
- 会匹配成功的内容:
Jeorge Sally (34)、Anna (34) - 会匹配失败的内容:
Adam siva ((缺少完整的(34))、Mike (25)(括号内不是34)、(34)(没有前面的名称)
内容的提问来源于stack exchange,提问作者user3780032
相关产品推荐
相关产品推荐

