90e家
2021-03-02 13:25
采纳率: 100%
浏览 73

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

NO.000042  2021-03-02

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

 

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • huyuan55555 2021-03-03 17:04
    已采纳

    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 无用
    打赏 举报
  • 爱晚乏客游 2021-03-02 13:52

    已经知道字符串格式了的话,直接用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 无用
    打赏 举报
  • __Apollos 2021-03-03 17:44

    代码如下:

    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 无用
    打赏 举报
  • Do.7 2021-03-02 17:14
    '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
    评论
    解决 无用
    打赏 举报