Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex clojure 1.7中的正则表达式_Regex_Parsing_Clojure - Fatal编程技术网

Regex clojure 1.7中的正则表达式

Regex clojure 1.7中的正则表达式,regex,parsing,clojure,Regex,Parsing,Clojure,我是regex的首席执行官,很明显他们是几种regex的口味 我正在使用clojure和一个在线工具 我遇到了几个关于stackoverflow和其他方面的例子,但它们似乎并不总是有效。 下面是我试图实现的目标,但输出是错误的 \d{1,3}(,\d{3})*(\.\d\d)?|\.\d\d 下面是字符串输入示例 我曾经有1956827.19美元,在我的银行设定900美元上限之前的一天里我花了987.99美元,两年后我有1200.8美元的余额 所以在解析它之后,我需要一个列表(“1956827

我是regex的首席执行官,很明显他们是几种regex的口味

我正在使用clojure和一个在线工具

我遇到了几个关于stackoverflow和其他方面的例子,但它们似乎并不总是有效。 下面是我试图实现的目标,但输出是错误的

\d{1,3}(,\d{3})*(\.\d\d)?|\.\d\d
下面是字符串输入示例

我曾经有1956827.19美元,在我的银行设定900美元上限之前的一天里我花了987.99美元,两年后我有1200.8美元的余额

所以在解析它之后,我需要一个列表
(“1956827.19”“987.99”“900”“2”“1200.8”)
,所以我需要5个元素

我使用下面的表达式

  (re-seq 
     (re-pattern Regex my-sentence))

如有任何建议,我将不胜感激

如果你能看看你的实际产出以及它们之间的差异,这会有所帮助

运行

(map first (re-seq #"\d{1,3}(,\d{3})*(\.\d\d)?|\.\d\d"
                   "I used to have 1,956,827.19 USD I once spent 987.99 USD in one days before my bank put a cap on 900 and 2 years later i have a balance of 1,200.8 USD.")
…作为输出产生

("1,956,827.19" "987.99" "900" "2" "1,200" "8")
显然,唯一错误的部分是小数点匹配后的内容。发生这种情况是因为您正在强制执行
\。\d\d
--小数点后两位--但在测试字符串中只有一位

#"\d{1,3}(,\d{3})*(\.\d+)?"
…没有这个问题


这里没有特定于Clojure的内容--您对任何PCRE派生的正则表达式语法和测试数据都会有相同的问题。

您描述的是所需的输出,而不是实际的输出。谢谢,我稍微将其更改为\d{1,}(,\d{3})*(\.\d+?我真的很感激您不只是使用
\d(?:[\d,.]*\d)?
?将自己限制在特定大小的数字组中可能会导致大量的误报。