我目前正在解析来自 SQL Server 的一些数据,我需要有关 Regex 的帮助。
我在 Sql Server 2005 中有一个程序集可以帮助我使用 C# Regex.Replace() 方法替换字符串。
我需要解析以下内容。
Strings:
CAD 90890
(CAD 90892)
CAD G67859
CAD 34G56
CAD 3S56.
AX CAD 890990
CAD 783783 MX
Needed Results:
90890
90892
G67859
34G56
3S56
890990
783783
SELECT TOP 25 CADCODE, dbo.RegExReplace(CADCODE, '*pattern*', '$1')
FROM dbo.CADCODES
WHERE CADCODE LIKE '%CAD%'
我需要在 CAD 字之后获取后续字符串,直到它遇到空格或任何非数字或数字的内容。我设法得到了数字,但在其他人身上确实失败了。我正在努力让它发挥作用,但找不到真正的解决方案。
提前致谢。
已更新以反射(reflect)新字符串
AX 890990 加元
783783 墨西哥加元
最佳答案
试试这个:
(\w+)\W*$
模式匹配最后一个单词 - 由字母数字(和下划线)组成。
示例:http://www.rubular.com/r/1zWQQVLZy1
另一种选择是查找至少包含一个数字的单词 - 这个可以匹配字符串中的任何位置,因此您可能需要处理多个匹配项。在这种情况下,您可以在整个模式周围添加一个捕获组,或者使用 $&
替换。
[a-zA-Z_]*\d\w*
示例:http://www.rubular.com/r/XUrFNuPQUv
如果不能匹配(Regex.Match
),必须使用Regex.Replace
,可以从头到尾匹配整个字符串,用组替换你需要:
RegExReplace(CADCODE, '^.*\b([a-zA-Z_]*\d\w*)\b.*$', '$1')
关于C# 正则表达式替换模式(替换字符串)返回 $1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3721199/