首页 > 解决方案 > 使用正则表达式获取子字符串

问题描述

我有一些字符串喜欢

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.

我试过/[^_]*/了,但它返回了IND_FROM_ONE_TO_FIVE => _FROM_ONE_TO_FIVE(没有先剪掉“_”)

我怎么能在java上做到这一点?

标签: javaregex

解决方案


您也可以在 is 之后添加一个锚点并匹配下划线。在替换中使用空字符串。

^[^_]*_

正则表达式演示| Java 演示

使用 replaceFirst 您可以省略锚点:

System.out.println("IND_FROM_ONE_TO_FIVE".replaceFirst("[^_]*_", ""));

输出

FROM_ONE_TO_FIVE

推荐阅读