我有一个数据集,其中每行包含一个括在一组括号或方括号内的数字。例如
Jim Bob Smith [1975]
Joe Bob Public (1955)
我遇到的问题是创建一个正则表达式,该表达式将匹配在两种情况下都可以使用的数字(不带括号或括号)。
我尝试过
(?<=\[).+?(?=\]) and
(?<=\().+?(?=\))
因此,我需要帮助找到将两者结合的方法。任何帮助将不胜感激。
答案 0 :(得分:1)
您可以使用以下.NET正则表达式:
(?:(\()|\[)(.*?)(?(1)\)|])
请参见regex demo
详细信息
(?:(\()|\[)
-一个non-capturing group,它与一个(
字符匹配并将其捕获到组1中,否则仅匹配一个[
字符(.*?)
-第2组:除换行符以外的任何0个或多个字符,并且尽可能少(您可能要在其中使用.*?
来匹配1,而不是\d+
或更多位数,或\d{4}
仅精确匹配四位数字,或什至(?:20|19)\d{2}
匹配20和21世纪的一年。)(?(1)\)|])
-一个conditional construct:如果第1组匹配,则匹配)
,否则,匹配]
字符。
答案 1 :(得分:1)