如何在java中找到一个特定位置混合不英语的字符串?



如何找到一个字符串在一个特定的位置与正则表达式?

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' => '삼'

最新更新