gpt4 book ai didi

c# - C# 中的正则表达式如何仅替换捕获组而不替换非捕获组

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:50 26 4
gpt4 key购买 nike

我正在使用 C# 在 Visual Studios 2013 Express 中编写正则表达式。我试图在每个包含单词和 !@#$%^&*()_- 的字符串周围加上单引号,除了:

  • 不是
  • 空()
  • notempty()
  • 当前日期()
  • 任何已经用单引号引起来的字符串。

这是我的正则表达式及其作用的示例: https://regex101.com/r/nI1qP0/1

我只想在捕获组两边加上单引号,而让非捕获组保持不变。我知道这可以通过环顾四周来完成,但我不知道怎么做。

最佳答案

你可以使用这个正则表达式:

(?:'[^']*'|(?:\b(?:(?:not)?empty|currentdate)\(\)|and|or|not))|([!@#$%^&*_.\w-]‌​+)

此处忽略的匹配项不会被捕获,可以使用 Match.Groups[1] 检索要引用的词。然后,您可以在 Match.Groups[1] 周围添加引号,并根据需要替换整个输入。

RegEx Demo

关于c# - C# 中的正则表达式如何仅替换捕获组而不替换非捕获组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31546273/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com