Re gex在括号中找到整数,在括号前找到外部整数

时间:2018-04-05 01:14:16

标签: regex regex-negation regex-group regex-greedy

我需要一个正则表达式,它在括号内找到整数,在括号之前找到外部整数。例如,假设我有一个字符串:

[ART.117.4002] Adapter Runtime (Adapter Service): Unable to invoke adapter service ost.app.ezycom.adapter:Statement_insertBatch.
[ADA.1.316] Cannot execute the SQL statement "INSERT INTO  dbo.Statement(AccountId, InvoiceId, DocumentType, SoldTo, ShipTo, Division, Works, Date, DateDue, DateDiscountDue, DiscountedAmount, Currency, Amount, ClaimRef, FolderPath, FileName, InvoiceMass, Amount_GST) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)". "
**-3(0) 1(1) -3(2) -3(3) -3(4) 2(5) 1(6) **
(22001/8152) String or binary data would be truncated."
String or binary data would be truncated.

我需要正则表达式才能找到答案 来自整个串的-3(0)1(1)-3(2)-3(3)-3(4)2(5)1(6)。任何帮助都会非常感激。

3 个答案:

答案 0 :(得分:2)

尝试this

\d+\(\d+\)

this要连续匹配:

(-?\d+\(\d+\)\s?)+  

答案 1 :(得分:0)

尝试这种模式:

-\d+\(\d+\)(?:\s-?\d+\(\d+\))*

Demo

顺便说一下,我想知道你绑定到INSERT语句的值是什么,以获得这些错误,但也许这是另一个问题的范围。

答案 2 :(得分:-1)

一种可能的解决方案是匹配(可选)短划线,至少一个数字的序列,然后是左边的paren,另一个至少一个数字的序列和右边的paren。所有匹配都在the following demo

中展示
-?\d+\(\d+\)(\s+-?\d+\(\d+\))*

(它包括你在另一个答案的评论中发布的不匹配序列)如果你知道序列前面会有两个**序列,那么它可以改进(但你不能说在你的请求中)正则表达式假定你需要一个空格来分隔每个子序列,如果子序列可以粘在一起,那么在上面的正则表达式中用\s+替换\s*