正则表达式排除匹配的第一个和最后一个字符

Ser*_*ras 3 java regex regex-negation

我有以下字符串:word_word2_word3_word4

我的目的是只提取'test2'。使用_\w*?_作为字符串匹配,我可以得到 ' word2 ' 作为匹配,但我看不到删除这些下划线以仅匹配 'word2' 的方法。

我不能使用 .split() 或类似的东西,这个值必须只使用 Regex 收集。

各位大侠有什么修改建议?

Cai*_*ira 10

您还可以使用正向前瞻和后视

(?<=_)\w*2(?=_)

我的目的是只提取'test2'。使用\w*? 作为字符串匹配,我可以将“word2”作为匹配项,但我看不到删除这些下划线以仅匹配“word2”的方法。

下划线不是匹配字符串的一部分,而是在它之前和之后

编辑:

更进一步,如果匹配字符串位于整个文本的开头或结尾,则它不会被下划线包围。

(?<=_|^)[^_]*2(?=_|$)

这使得在这种特定情况下可以选择使用下划线。

在线测试