首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C# Regex替换模式(替换字符串)返回$1

C# Regex替换模式(替换字符串)返回$1
EN

Stack Overflow用户
提问于 2010-09-15 19:41:38
回答 4查看 4.6K关注 0票数 2

我目前正在分析来自Server的一些数据,我需要Regex方面的帮助。

Server 2005中有一个程序集,它帮助我使用Regex.Replace()方法替换字符串。

我需要解析以下内容。

代码语言:javascript
复制
    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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-09-15 19:44:11

试试这个:

代码语言:javascript
复制
(\w+)\W*$

该模式与字母数字(和下划线)构成的最后一个单词匹配。

示例:http://www.rubular.com/r/1zWQQVLZy1

另一种选择是找到至少一个数字的单词--这个单词可以匹配字符串上的任何位置,因此您可能需要处理多个匹配。在这种情况下,您可以在整个模式周围添加一个捕获组,或者使用$&替换。

代码语言:javascript
复制
[a-zA-Z_]*\d\w*

示例:http://www.rubular.com/r/XUrFNuPQUv

如果不能匹配(Regex.Match),并且必须使用Regex.Replace,则可以从开始到结束匹配整个字符串,并将其替换为所需的组:

代码语言:javascript
复制
RegExReplace(CADCODE, '^.*\b([a-zA-Z_]*\d\w*)\b.*$', '$1')
票数 1
EN

Stack Overflow用户

发布于 2010-09-15 20:16:05

我想这就是你想要的:

代码语言:javascript
复制
^\W*\w*CAD\w*\W*(\w+)\W*$

正则表达式必须匹配整个字符串,以便RegExReplace可以用$1替换它,从而有效地去掉不需要的部分。

编辑:让我后退一步,确保我做对了。这是因为

代码语言:javascript
复制
WHERE CADCODE LIKE '%CAD%'

在查询中,您已经知道每个字符串都包含序列CAD。在这种情况下,没有必要通过再次匹配该序列来使正则表达式复杂化。这应该是你所需要的:

代码语言:javascript
复制
^.*?(\w+)\W*$
票数 1
EN

Stack Overflow用户

发布于 2010-09-15 19:54:36

试试这个:

代码语言:javascript
复制
(?:\(CAD\)|CAD)\s+?([\dA-Z]+)

您可以从捕获组号1获得结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3721199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档