发布于 2024-11-01 00:04:02 字数 390 浏览 0 评论 0原文

我看过这个话题: 如何使用正则表达式用括号将文本括起来? 但这是在 ruby​​ 上,我不知道 C# 的模拟 我尝试过

text = System.Text.RegularExpressions.Regex.Replace(text, ' '  + SpecialWord + ' ', " \"\0\" ", System.Text.RegularExpressions.RegexOptions.IgnoreCase);

,但没有插入我匹配的单词。那么如何用引号将匹配的单词括起来呢?

I've seen this topic:
How to surround text with brackets using regex?
but that's on ruby and I don't know the analog for C#
I tried

text = System.Text.RegularExpressions.Regex.Replace(text, ' '  + SpecialWord + ' ', " \"\0\" ", System.Text.RegularExpressions.RegexOptions.IgnoreCase);

but that didn't insert my matched word. So how do I surround my matched word with quotes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

只有一腔孤勇 2024-11-08 00:04:02

使用 $ 而不是 \ 作为反向引用。另外,将您的特殊单词放在括号中并引用该子组,否则,您将得到完整的匹配字符串:

text = System.Text.RegularExpressions.Regex.Replace(
                         text, "\\b("  + SpecialWord + ")\\b", " \"$1\" ", 
                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

说明:

  • \b 是单词边界,即空格,字符串的结尾, $0 将匹配整个匹配,即包括单词边界,
  • $1 匹配第一个子组,即括号中的部分。

use $ instead of \ for the backreference. Also, put your special word in parenthesis and reference that sub group, otherwise, you will get the complete matched string:

text = System.Text.RegularExpressions.Regex.Replace(
                         text, "\\b("  + SpecialWord + ")\\b", " \"$1\" ", 
                         System.Text.RegularExpressions.RegexOptions.IgnoreCase);

Explanation:

  • \b is a word boundary, i.e. a space, the end of the string, a full stop etc.
  • $0 will match the whole match, i.e. including the word boundary, whereas $1 matches the first sub group, i.e. the part in the parenthesis.
巷雨优美回忆 2024-11-08 00:04:02

尝试使用 \b 来匹配单词边界,而不是空格。

您还需要使用 $0 而不是 \0

text = Regex.Replace(text, @"\b" + SpecialWord + @"\b", @" ""$0"" ", RegexOptions.IgnoreCase);

Try using \b to match the word boundary, rather than a space.

You need to use $0 instead of \0 too.

text = Regex.Replace(text, @"\b" + SpecialWord + @"\b", @" ""$0"" ", RegexOptions.IgnoreCase);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文