代码之家  ›  专栏  ›  技术社区  ›  Andy Evans

与括号或括号中的字符串中的数字匹配的正则表达式

  •  0
  • Andy Evans  · 技术社区  · 6 年前

    我有一个数据集,其中每一行都包含一个数字,该数字被括在一组圆括号或方括号中。例如

    Jim Bob Smith [1975] 
    Joe Bob Public (1955)
    

    我遇到的问题是创建一个正则表达式,它将匹配在这两种情况下都能工作的数字(不带括号或括号)。

    (?<=\[).+?(?=\]) and
    (?<=\().+?(?=\))
    

    所以我需要帮助找到把两者结合起来的方法。如有任何帮助,将不胜感激。

    2 回复  |  直到 6 年前
        1
  •  1
  •   Wiktor Stribiżew    6 年前

    您可以使用以下.NET正则表达式:

    (?:(\()|\[)(.*?)(?(1)\)|])
    

    regex demo

    • (?:(\()|\[) -一个 non-capturing group 匹配并捕获到组1A ( [ 烧焦
    • (.*?) -组2:除换行符之外的任何0个或多个字符,尽可能少(而不是 .*? ,您可能想使用 \d+ 匹配一个或多个数字,或 \d{4} 精确地匹配四个数字,甚至 (?:20|19)\d{2} 与20世纪和21世纪的一年相匹配。)
    • (?(1)\)|]) -一个 conditional construct ) 是匹配的,否则,a ] 烧焦。
        2
  •  1
  •   JGFMK    6 年前

    尝试

    .*?[[(](\d{4})[])]
    

    here

    1. .*? -非贪婪任意字符
    2. [[(] 对于任一开头的报价
    3. (\d{4})
    4. [])] 对于任一最后报价
    推荐文章