You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用Regular Expressions匹配字符串数组中的两类指定模式?

用正则表达式精准匹配目标字符串

嘿,这个需求用正则表达式就能完美解决,咱分两步拆解,保证精准筛选出你要的两类字符串:

第一步:匹配仅"abc {number}"模式的字符串

这类字符串的核心是整个内容只有"abc"加空格加一串数字,不能有任何额外字符。所以正则要严格限定字符串的开头和结尾:

^abc \d+$
  • ^:匹配字符串的起始位置
  • abc :精确匹配"abc"加空格
  • \d+:匹配1个或多个数字(0-9)
  • $:匹配字符串的结束位置

这样就能把像"abc 1 def 0"这种后面带额外内容的字符串排除在外。

第二步:匹配"abc {number} def {number}"模式的字符串

同理,这类字符串要求整个内容就是"abc+数字+def+数字",不能再带其他后缀(比如你例子里的"ghi 5")。对应的正则是:

^abc \d+ def \d+$

这个正则在第一步的基础上,追加了" def "加数字的匹配规则,同样用^$锁死整个字符串范围,确保没有多余内容。

代码示例(Python)

直接上可运行的代码,你可以直接套用:

import re

# 你的原始字符串数组
strings = ["abc 1","abc 2","abc 1 def 0","abc 23","abc 1 def 1 ghi 5"]

# 筛选仅符合"abc {number}"的字符串
only_abc_group = [s for s in strings if re.fullmatch(r'^abc \d+$', s)]
print("仅匹配abc+数字的结果:", only_abc_group)  # 输出: ['abc 1', 'abc 2', 'abc 23']

# 筛选符合"abc {number} def {number}"的字符串
abc_def_group = [s for s in strings if re.fullmatch(r'^abc \d+ def \d+$', s)]
print("匹配abc+数字+def+数字的结果:", abc_def_group)  # 输出: ['abc 1 def 0']

其他语言适配思路

如果是JavaScript、Java等其他语言,核心逻辑完全一致:

  • 用带^$的正则表达式
  • 使用语言自带的全匹配方法(比如JS的RegExp.test(),Java的Pattern.matches()

内容的提问来源于stack exchange,提问作者Liran Bar-Nes

火山引擎 最新活动