Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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 - Fatal编程技术网

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