我目前正在分析来自Server的一些数据,我需要Regex方面的帮助。
Server 2005中有一个程序集,它帮助我使用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字,直到它击中一个空白或任何不是数字或数字。我设法得到了数字,但对其他人来说,它真的失败了。我试着让它起作用,但我找不到真正的解决办法。
提前谢谢。
更新以反映新的字符串
AX CAD 890990
CAD 783783 MX
发布于 2010-09-15 19:44:11
试试这个:
(\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')发布于 2010-09-15 20:16:05
我想这就是你想要的:
^\W*\w*CAD\w*\W*(\w+)\W*$正则表达式必须匹配整个字符串,以便RegExReplace可以用$1替换它,从而有效地去掉不需要的部分。
编辑:让我后退一步,确保我做对了。这是因为
WHERE CADCODE LIKE '%CAD%'在查询中,您已经知道每个字符串都包含序列CAD。在这种情况下,没有必要通过再次匹配该序列来使正则表达式复杂化。这应该是你所需要的:
^.*?(\w+)\W*$发布于 2010-09-15 19:54:36
试试这个:
(?:\(CAD\)|CAD)\s+?([\dA-Z]+)您可以从捕获组号1获得结果。
https://stackoverflow.com/questions/3721199
复制相似问题