【问题标题】:How to find a string at a specific location mixed not english in java?java - 如何在Java中混合非英语的特定位置查找字符串?
【发布时间】:2022-06-18 11:08:05
【问题描述】:

如何使用正则表达式在特定位置查找字符串?

choryangStn_110_220114_일_0.sbm

choryangStn_110_220114_이_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");

以上两个句子都不能正常工作。

我想知道这怎么可能。

【问题讨论】:

    标签: regex


    【解决方案1】:

    您可以将以下正则表达式与replaceFirst() 一起使用:

    (?U)^.*_(\\w+)_\\d+\\.\\w+$
    

    (?U) 是一个嵌入式标志选项,它等效于 Pattern.UNICODE_CHARACTER_CLASS 选项,它使所有速记字符类都能识别 Unicode。

    查看regex demoJava demo

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

    【讨论】:

      猜你喜欢
      • 2015-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 2023-03-26
      • 1970-01-01
      • 2017-04-10
      相关资源
      最近更新 更多