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

标签 java regex regex-negation

我有以下字符串: word_word2_word3_word4

我的意图是只提取“test2”。使用 _\w*?_ 作为字符串匹配,我可以获得 'word2' 作为匹配,但我看不到删除那些下划线以仅匹配 ' word2'.

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

你们建议大家做哪些修改?

最佳答案

你也可以使用积极的前瞻和后视

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

My intention is to extract only 'test2'. Using \w*? as string match, I can get 'word2' as a match, but I can't see a way of removing those underscores to match only 'word2'.

下划线不会成为匹配字符串的一部分,但会出现在它的前后

编辑:

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

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

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

online test

关于java - 正则表达式排除匹配的第一个和最后一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40618710/

相关文章:

regex - POSIX 正则表达式 : Exclude a specified word in the list using Regex

regex - 用于注释的正则表达式,但不在 “string”中/不在另一个容器中

java - 使用正则表达式在字符串中搜索子字符串

java - 尝试使用java和clojure在eclipse中创建maven动态Web项目

java - 如何在 IntelliJ 中快速输入记录器定义?

python - Python 中只匹配 ASCII 字母表的正则表达式是什么?

regex - 在 Notepad++ 中的第二个分隔符处分割字符串

java - 删除hibernate实体而不(尝试)删除关联表( View )条目

java - 如何将 HashMap 值传递给列表

c# - 正则表达式匹配 C# 中除二进制数以外的任何内容?