正则表达式用于提取连字符

时间:2018-05-19 08:35:51

标签: regex regex-negation regex-lookarounds regex-group regex-greedy

我正在学习正则表达式并尝试编写一个与每个字符串完全匹配的模式,而不是' - '这样我就可以迭代每个组并打印相应的字符串。

我的字符串看起来像" Abcd001-wd2s-vwe1-20180e3103.txt"

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

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

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

如果您可以指导我或者有更好的方法来实现这一目标,那将会非常有用吗?

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

谢谢!

2 个答案:

答案 0 :(得分:1)

要从示例数据中获取vwe120180e3103,您可以使用量词{2}{3}重复匹配一个或多个字符字符后跟连字符{ {1}}。

然后你可以捕获一个匹配不是连字符或点的组(?:\w+-){2}

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

答案 1 :(得分:0)

试试以下正则表达式

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

同时检查类似的实现: https://stackoverflow.com/a/50336050/8179245