正则表达式识别各种候选法定数字

时间:2011-05-10 04:44:51

标签: regex

[这是一个经过大量重新编辑的版本。请忽略此问题的过去版本。]

使用复杂正则表达式的小型python脚本provided by eyquem来识别字符串中的数字并清理它们。测试结果涵盖了50多个样本,我在此不再赘述。

问题是,有人可以调整regexp或提供一个新的regexp,以便更明白地对待逗号吗?

特别是,我希望看到以下4个测试输入产生相关的输出。

  • '4,8.3,5' - > '4''8.3''5'
  • '44,12,333,888' - > '44''22,333,888'####请注意,43,42永远不是一个数字。
  • '11,333e22,444' - > '11,333e22''444'#### 11,333在e22前被接受,但之后不接受22,444。
  • '1,999人发现代码“i + = 1999;”在意义上要清晰明了,并且可能导致不到1999千字节的额外内存消耗;然而,1,999和1999 KB磁盘空间的增益绝不是理想的,特别是1999年和我们有超过1,999美元的合作! ' - > '1,999''1999''1999''1''999''999''1999''1,999'

1 个答案:

答案 0 :(得分:0)

尽管有所有信息,但您的帖子实际上是模糊的。对于初学者,你没有问任何问题。你想要什么?

您是否在询问如何找到所有可能的比赛?在Perl中,您可以使用

local our @matches;
/(...)(?{ push @matches, $1 })(?!)/

(?!)从不匹配,因此它会使正则表达式引擎回溯以找到另一个匹配项,但代码块会保存它在执行此操作之前所执行的操作。

如果你要求找到任何匹配,那么它很容易解决:不要费心寻找选项2,因为选项1将始终匹配2匹配的选项。