【发布时间】:2018-02-23 15:51:51
【问题描述】:
我已经搜索过这个答案,但没有找到一个完全有效的答案。
我有以下模式,其中哈希是任何数字:102###-###:#####-### 或 102###-###:#####-# ###
它必须以 102 开头,并且模式中的最后一组可以是 3 位或 4 位。
问题是我可以有一个字符串,其中包含 1-5 个这些模式,其中包含任何类型的字符(空格、字母等)。我在下面发布的正则表达式与模式很好地匹配,但我试图选择所有不是这个模式的东西,所以我可以删除它。最终目标是提取所有模式,并将所有模式以逗号分隔作为输出。 (模式,模式,模式)我如何用正则表达式来完成这个?也许有比尝试这条线更好的方法?谢谢。这是使用 VBA。
模式的正则表达式:(\D102\d{3}-\d{3}:\d{5}-\d{3,4}\D)
字符串示例:type:102456-345:56746-234 102456-345:56746-2343 FollowingCell#:102456-345:56746-234 exampletext#@$% 102456-345:56746-2345 stuff
【问题讨论】:
-
请输入您使用的标签语言/技术。
-
您忘记了捕获组的右括号。
-
Ehrm...如果您可以匹配所有出现的模式,为什么要删除它周围的所有内容?
-
对不起。我已经编辑了语言,并修复了右括号。我只是在 VBA 中使用 Regex 库。
-
@UnderTheair 试试
(?<!\d)102\d{3}-\d{3}:\d{5}-\d{3,4}(?!\d)