【问题标题】:Extracting substring from string between 2 strings in regex从正则表达式中2个字符串之间的字符串中提取子字符串
【发布时间】:2021-01-23 03:30:55
【问题描述】:
1)Name :        Alibaba        
Id :            1341343144           
Nationality :   ALIEN CITIZEN   
Address :       

Address Source : Address Change Date :

Position SECRETARY

1)Name :        TAN GENGQI       
Id :            14019849314        
Category :      Individual       
Nationality :   SFAEFFE CITIZEN
Address :            

以上是我拥有的数据。我正在尝试使用正则表达式提取 ID 号,但由于“表格”有点不一致,我无法提取正确的结果。任何人都可以告诉我缺少什么?

下面是我当前的代码

 (?<=Id :)(?s)(.*?)(?=:)

【问题讨论】:

  • 我强烈推荐例如regex101.com 用于所有正则表达式实验。但首先要确定你真的需要一个正则表达式,通常字符串提取问题可以在没有正则表达式的情况下更容易和更简单地解决。并且正则表达式往往会增加几层复杂性并降低代码的可维护性。
  • 怎么样:(?&lt;ID&gt;\d{10,11})?

标签: regex


【解决方案1】:

找到了答案。我可以将我的 (?=:) 替换为 (?=\n)

【讨论】:

    【解决方案2】:

    你可以使用捕获组

    \bId :\s*(\d+)\b
    
    • \bId :一个字边界,匹配Id :
    • \s* 匹配 0+ 个空格字符
    • (\d+) 捕获组 1,匹配 1+ 个数字后跟一个单词边界

    Regex demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 2010-09-05
      • 2022-11-17
      • 2010-10-14
      相关资源
      最近更新 更多