如何找到一个字符串在一个特定的位置与正则表达式?
chylyangstn_110_220114_ qq_0 .sbm
choryangstn_110_220114_qq_0 .sbm
choryangStn_110_220114_ _0.sbm
在工作中,我想带일
,이
,삼
我试着
String filename = "choryangStn_110_220114_일_0.sbm";
filename.replaceAll(".*_(\w+)_\d+\.\w+", "$1");
如果这样做,它将不能正常工作。
我想知道我怎样才能满足\w or [가-힣]
。
filename.replaceAll(".*_(\w+)||[가-힣]_\d+\.\w+", "$1");
filename.replaceAll(".*_(\w+||[가-힣])_\d+\.\w+", "$1");
以上两个句子都不正确。
我想知道这怎么可能。
您可以对replaceFirst()
使用以下正则表达式:
(?U)^.*_(\w+)_\d+\.\w+$
(?U)
是一个内嵌的标志选项,它相当于Pattern.UNICODE_CHARACTER_CLASS
选项,使所有的简写字符类都是unicode感知的。
查看正则表达式演示和Java演示:
import java.util.*;
import java.util.regex.*;
class Test
{
public static void main (String[] args) throws java.lang.Exception
{
String strings[] = {"choryangStn_110_220114_일_0.sbm",
"choryangStn_110_220114_이_0.sbm",
"choryangStn_110_220114_삼_0.sbm"
};
String regex = "(?U)^.*_(\w+)_\d+\.\w+$";
for(String text : strings)
{
System.out.println("'" + text + "' => '" + text.replaceFirst(regex, "$1") + "'");
}
}
}
输出:
'choryangStn_110_220114_일_0.sbm' => '일'
'choryangStn_110_220114_이_0.sbm' => '이'
'choryangStn_110_220114_삼_0.sbm' => '삼'