【问题标题】:Extract specific format from a string, regex, python从字符串、正则表达式、python 中提取特定格式
【发布时间】:2019-03-13 07:27:09
【问题描述】:

描述:

我有一个包含单词、数字、括号和括号内的字母的字符串。

问题:

我只想提取带小数的数字和带字母的括号。

示例:

, INC., 5.5(b) -------> 5.5(b)

Section 13.2(k)(ii) ---------> 13.2(k)(ii)

WBNEOGNOFD.)! 82.3(b)(k)(ix) -----------> 82.3(b)(k)(ix)

我的尝试:

找到第一个数字,然后是小数点,然后是 '('。但有时,它只有 1 个数字,小数点后没有括号。

我认为可以解决但我无法解决的解决方案:

花括号重复限定符 {} 匹配三个字母字符和四个数字字符。 我尝试了 Christian Dean 给出的答案来解决我的正则表达式,但它没有给出准确的结果。 (Extract string with specific format)

【问题讨论】:

  • 小数点后没有括号时,要不要匹配?
  • 请分享您尝试过的正则表达式
  • @CertainPerformance:什么都行。匹配或不匹配,除非它可以识别该模式。
  • @depperm: 搜索('\d.\d{2}([a-zA-Z])',字符串)。我们使用 /d 来查找任何数字,我们使用什么来标识小数或括号?

标签: python regex string


【解决方案1】:

要将数字与小数后跟()s 组匹配,您可以使用

\d+\.\d+(?:\(\w+\))+

https://regex101.com/r/wqYZr9/1

  • \d+\.\d+ - 匹配十进制数
  • (?:\(\w+\))+ - 在括号中重复一组单词字符

【讨论】:

  • 是否可以提取单个数字?
  • 你的意思是,不匹配十进制数字或大于 9 的数字?我想你可以在后面寻找一个空格或字符串的开头或其他东西,比如(?<= )\d(?:\(\w+\))+ 不确定你在找什么
  • 例如,使用您的正则表达式,如果字符串是“Article 7”,我无法提取。如果字符串没有小数而只有一个数字,是否可以提取“7”?
  • 如果字符串只包含一个数字并且您想匹配该数字,只需使用\d
  • 是的。但是如果它需要一个数字或一组数字怎么办(就像上面描述的那样)?
猜你喜欢
  • 2021-05-24
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2021-10-19
  • 1970-01-01
相关资源
最近更新 更多