用于提取连字符之间的每个单词的正则表达式

Regex for extracting each word between hyphens

我正在学习正则表达式并尝试编写一个模式来完全匹配每个不带“-”的字符串,以便我可以迭代每个组并打印相应的字符串。

我有一个看起来像 "Abcd001-wd2s-vwe1-20180e3103.txt"

的字符串

我能够编写一个正则表达式来从上面的文本中提取 Abcd001、wd2s 和 .txt,如下所示

(\A[^-]+)=> Abcd001
(-[^-]+-)=> wd2s
(\..*)=>.txt

但是,我无法想出正确的模式来提取确切的字符串 vwe1 和 20180e3103

如果您能指导我解决这个问题或者是否有更好的方法来实现这一点,那将非常有帮助?

请注意:[^-.]+ 可能会单独给我所有单词,但我正在寻找一个选项,其中我为每个字符串都定义了一个组,以便它们一对一映射。

谢谢!

试试下面的正则表达式

/\-([^\)]+)\-/gmi;

同时检查类似的实现:

要从示例数据中获取 vwe120180e3103,您可以使用量词 {2}{3} 重复匹配一个或多个单词字符,后跟一个连字符 (?:\w+-){2}.

然后您可以在组中捕获 ([^-.]+) 匹配而不是连字符或点。

(?:\w+-){2}([^-.]+)