qq_31839695
90e家
采纳率100%
2021-03-02 13:25

正则表达式处理字符串,输出想要的两个值

5
已采纳

NO.000042  2021-03-02

我想用正则表达式提取出来编号42 和日期2021-03-02 ?应该怎么写能输出这两个

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • huyuan55555 huyuan55555 1月前

    string str = "NO.000042  2021-03-02";
    System.Text.RegularExpressions.Regex match = new System.Text.RegularExpressions.Regex(@"\d{4}-\d{2}-\d{2}|^0000\d{2}$|(\d+){6}");
    var list=  match.Matches(str);

    点赞 1 评论 复制链接分享
  • ruizefirst __Apollos 1月前

    代码如下:

    public class RegexTest {
        public static void main(String[] args) {
            String str = "NO.000042  2021-03-02";
            //提取日期正则
            String dateRegexStr = "\\d{4}(\\-|\\/|.)\\d{1,2}\\1\\d{1,2}";
            //提取NO串中的数字正则
            String numRegexStr = ".[1-9]\\s";
            //将两个正则合并到一起同时满足
            String fullRegexStr = ".[1-9]\\s+\\s+\\d{4}(\\-|\\/|.)\\d{1,2}\\1\\d{1,2}";
            Pattern p = Pattern.compile(fullRegexStr);
            Matcher m = p.matcher(str);
            if(m.find()){
                System.out.println(m.group());
            }
        }
    }

    希望能帮到你

    点赞 1 评论 复制链接分享
  • qq_34124780 qq_34124780 1月前

    已经知道字符串格式了的话,直接用substring分割出来就是了substring(param1,param2)

    param1:下标为0开始的起始位置

    param2:切割多少个字符

    string str = "NO.000042  2021-03-02";
    Console.WriteLine(str.Substring(7, 2));//42
    Console.WriteLine(str.Substring(11, 10));//2021-03-02


     

    点赞 1 评论 复制链接分享
  • Naive_3 Do.7 1月前
    'NO.000042  2021-03-02'.split('  ')[1] //2021-03-02
    'NO.000042  2021-03-02'.match(/(?<=(  )).*/g)[0] //2021-03-02
    Number('NO.000042  2021-03-02'.split('  ')[0].split('.')[1]) //42
    Number('NO.000042  2021-03-02'.split('  ')[0].match(/(?<=(\.)).*/g)[0]) //42
    点赞 评论 复制链接分享