我正在构建一些基本的sql语句。
插入表格值('带有20',20.65,70,80的文字)
除了字符串中的数字之外,是否有任何正则表达式匹配所有数字? 如果你有一个正则表达式模式,以避免评论中的数字,这将是很好的!
提前致谢!
答案 0 :(得分:1)
使用前瞻性的偶数以下引号(偶数表示匹配 引号外):
-?\d+(.\d+)?(?=(([^']*'){2})*[^']*$)
查看显示匹配的live demo,如下所示:
插入表值('文字带20', 20.65 , 70 , 80 ,'更多文字1234 foo', 9 强>)
答案 1 :(得分:0)
试试这个 -
(?=[,(])[^']*?(\d+(?:\.\d+)?)[^']*?(?=[,)])
这只会在(..)
内匹配
演示here
编辑 -
转义的正则表达式用于c# -
(?=[,(])[^']*?(\\d+(?:\\.\\d+)?)[^']*?(?=[,)])
答案 2 :(得分:0)
只要您的输入有限,这可能对您有用。
(?:\(|, )(\b[\d.]+\b)(?:,|\))
请注意,您需要在每次匹配后按字符支持搜索位置。这会将数字放入捕获组1中,并且要求小数位于数字的中间(不在末尾),尽管它不会阻止多个小数。
虽然不正确地匹配这些引用的数字:
'1000, 2000'
错误地捕获这些:
'Some numbers that really should not be matched: (1, 2)'
它还无法理解何时转义引号。但是,根据您输入的限制,这可能就足够了,或者至少是一个起点。