gpt4 book ai didi

c# - 正则表达式替换

转载 作者:行者123 更新时间:2023-12-03 21:09:30 25 4
gpt4 key购买 nike

我有以下正则表达式

(-[^\w+])|([\w+]-[\w+])

我想用它来用空格替换破折号

test -test             should not be replaced
test - test should be replaced
test-test should be replaced

因此,只有在 test -test 的情况下,破折号才不应被替换。

目前([\w+]-[\w+])正在替换破折号周围的t。

        var specialCharsExcept = new Regex(@"([\w+]-[\w+])", RegexOptions.IgnoreCase);

if (string.IsNullOrEmpty(term))
return "";

return specialCharsExcept.Replace(term, " ");

有什么帮助吗?提前致谢

PS:我使用的是 C#。

更新

我现在正在尝试将您的 reg exp 用于以下情况。

some - test "some test"   - everything within the quotes the expression should not be applied

这可能吗?

最佳答案

尝试这个疯狂的:

-(?!\w(?<=\s-\w))

这个正则表达式:

  • 搜索后面不带空格的破折号(字母前有两个字符的空格)。
  • 照顾test- test-test ,您的测试用例中没有。
  • 仅选择破折号,因此您可以替换它(这确实使定义如此复杂)。

顺便说一下 - 你不需要RegexOptions.IgnoreCase因为您的正则表达式没有文字部分,所以您不会 try catch /test/来自"Test TEST".这会做:

Regex specialCharsExcept = new Regex(@"-(?!\w(?<=\s-\w))");
return specialCharsExcept.Replace(term, " ");

关于c# - 正则表达式替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2108702/

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