Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 要排除匹配的第一个和最后一个字符的正则表达式_Java_Regex_Regex Negation - Fatal编程技术网

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

Java 要排除匹配的第一个和最后一个字符的正则表达式,java,regex,regex-negation,Java,Regex,Regex Negation,我有以下字符串: 单词2单词3单词4 我的意图是只提取“test2”。使用\uw*?\uu作为字符串匹配,我可以将“word2”作为匹配项,但我看不到删除这些下划线以仅匹配“word2”的方法 我不能使用.split()或类似的东西,必须仅使用正则表达式收集此值 你建议大家做些什么修改?你的问题并不完全清楚,但假设word2、word3等都是不包含\uu的任意单词,你可以使用捕获组来提取要提取的字符子集。例如: \w*_(\w*)_\w*_\w* 匹配字符串,第一个(也是唯一的)捕获组提取第二

我有以下字符串: 单词2单词3单词4

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

我不能使用.split()或类似的东西,必须仅使用正则表达式收集此值


你建议大家做些什么修改?

你的问题并不完全清楚,但假设
word2
word3
等都是不包含
\uu
的任意单词,你可以使用捕获组来提取要提取的字符子集。例如:

\w*_(\w*)_\w*_\w*

匹配字符串,第一个(也是唯一的)捕获组提取第二个单词。也许
*
应该是
+
,这取决于您是否要接受零大小的单词。

如果您不担心性能,那么一种快速而肮脏的方法就是删除匹配的第一个和最后一个字符

您还可以使用正向向前看和向后看


(?为什么不使用String.split(“”)[1]?不能使用String.split(“”)[1]因为它将由客户端解释,并且必须是可配置的。从这个问题来看,我假设您需要第二个单词。您需要对
split
代码进行哪些更改,而不需要使用Regex进行编码?Hello@BeeOnRope,谢谢您的建议。不幸的是,如果我使用您的Regex,它将匹配所有字符串。我只需要不带下划线的“word2”。您对其进行了任何修改吗?您所说的“想要”是什么意思?上面的代码匹配整个字符串,但在查询第一个匹配的组(部分
(\w*)
)时,只提供
word2
)。如果你关心匹配,你可以结合使用lookahead和lookahead。我使用了,应用了这个正则表达式和word1\u word2\u word3\u word4字符串,它匹配所有这些,而不仅仅是word2。这无法完成,因为客户端必须能够以他们想要的方式配置它。这是一个我只需要匹配的字符串。工作方式如下魅力!谢谢!:):)为什么你的正则表达式中有
2
。如果输入是
abc\u foo\u pqr\u bar
,用户要求将文本与所附
2
匹配(
test2
)。如果案例是abc\u foo\u pqr\u bar
,那么将没有匹配项。。。