C# 正则表达式使用小计

此文档用于记录平时使用正则表达式的心得,不定期更新

基础

实例

替换实例一
//这里匹配以 “( 开头,以 )” 结尾的字符串
private static Regex REGEX_ARG_CONTENT = new Regex(@"""@(.*?)""");

//此方法用于在匹配到的结果前添加@字符
format = REGEX_ARG_CONTENT.Replace(format, new MatchEvaluator((m) =>
{
    string value = $"@{m}";
    return value;
}));
替换实例二

//分组构造,匹配以Properties.Resources.开始以,或)结束的字符串

 (Properties.Resources.)(.*?)([,)])

将匹配到的数据分组1替换为LanguageManager.GetString("

则匹配和替换字符串为:

//匹配字符串,这里使用()将匹配分成3个组

(Properties.Resources.)(.*?)([,)])

//将匹配结果替换如下,使用匹配结果中的分组2和3来组合最后的替换结果

LanguageManager.GetString("${2}")${3}

前一个字符不是某个字符

(?<!x)

可以使用负向零宽断言来实现,在正则表达式中,(?<!x) 表示匹配前一个字符不是x的情况,例如:要查找字符串中不是数字的字符,可以使用 (?<![0-9])\w,其中 (?<![0-9]) 表示前一个字符不是数字,\w 表示匹配任意一个字母、数字或下划线。

后一个字符不是某个字符

?![Xx]

可以使用否定后行断言来实现该功能。上面是一个示例,找到所有的字母,但字符串后面的字符不是X

[A-Za-z](?![Xx])

这个正则表达式使用 [A-Za-z] 匹配任何字母,然后使用 (?![Xx]) 表示后面的字符不是X或x。

请注意,否定后行断言只匹配前面的字符,不匹配在其后面的字符。因此,在使用这些表达式时,请确保在处理整个字符串之前消耗任何之后的匹配。

复杂正则一

@"((?:[\u4e00-\u9fa5_a-zA-Z0-9]:\\)?(?:[^\\?\/\*\|<>:\""]+\\)+[^\\?\/\*\|<>:\""]+\.(?:wav|mp3|mid))"

说明:^符号放在[]内表示取反,不匹配[]内的任一字符,[]后的+表示匹配多次

U4300-U9fa5代表了符合汉字GB18030规范的字符集,因为为了兼容,所有字符都以unicode编码实现,汉字也不例外.

官方文档:.NET 正则表达式 - .NET | Microsoft Learn

正则表达式语言 - 快速参考 - .NET | Microsoft Learn

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

破浪征程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值