Java 使用正则表达式获取子字符串
我有一些字符串,比如Java 使用正则表达式获取子字符串,java,regex,Java,Regex,我有一些字符串,比如 1.IND_FROM_ONE_TO_FIVE 2.IND_FROM_FIVE_TO_TEN 3.BS_FROM_ONE_TO_FIVE 4.BS_FROM_FIVE_TO_TEN 5.OP_FROM_ONE_TO_FIVE 6.OP_FROM_FIVE_TO_TEN 我想在第一个“包括”之前把所有的东西都删掉 比如: 1.IND_FROM_ONE_TO_FIVE => FROM_ONE_TO_FIVE 2.IND_FROM_FIVE_TO_TE
1.IND_FROM_ONE_TO_FIVE
2.IND_FROM_FIVE_TO_TEN
3.BS_FROM_ONE_TO_FIVE
4.BS_FROM_FIVE_TO_TEN
5.OP_FROM_ONE_TO_FIVE
6.OP_FROM_FIVE_TO_TEN
我想在第一个“包括”之前把所有的东西都删掉
比如:
1.IND_FROM_ONE_TO_FIVE => FROM_ONE_TO_FIVE
2.IND_FROM_FIVE_TO_TEN => FROM_FIVE_TO_TEN
3.BS_FROM_ONE_TO_FIVE => FROM_ONE_TO_FIVE
4.BS_FROM_FIVE_TO_TEN => FROM_FIVE_TO_TEN etc.
我尝试了/[^\u]*/
,但它返回IND\u FROM\u ONE\u TO\u FIVE=>\u FROM\u ONE\u TO\u FIVE
(没有首先剪切“\u”)
如何在java上实现它?您可以在锚之前加上锚,并在is之后匹配下划线。在替换中,请使用空字符串
^[^_]*_
|
使用replaceFirst可以省略锚点:
System.out.println("IND_FROM_ONE_TO_FIVE".replaceFirst("[^_]*_", ""));
输出
FROM_ONE_TO_FIVE
您可以使用匹配而不是替换:从此正则表达式(多行)中获取第一个也是唯一一个捕获:
^\d+\.[^\u]+\ u(.*)$
()。您可以使用捕获组提取您想要的子字符串
^[^_]+_(.*)
我还尝试在Java上测试结果
import java.util.regex.*;
public class MyClass {
public static void main(String args[]) {
String mydata = "BS_FROM_FIVE_TO_TEN";
Pattern pattern = Pattern.compile("^[^_]+_(.*)");
Matcher matcher = pattern.matcher(mydata);
if (matcher.find())
{
System.out.println(matcher.group(1));
}
}
}
结果
FROM_FIVE_TO_TEN