C# 如何匹配不匹配的单词';使用正则表达式不能以某些字符开始或结束?

C# 如何匹配不匹配的单词';使用正则表达式不能以某些字符开始或结束?,c#,regex,string,unity3d,match,C#,Regex,String,Unity3d,Match,我想找到不以某些特定字符开头或结尾的单词匹配。 例如,我有这个输入,我只想匹配突出显示的单词: “字符串”string“字符串” 并排除以“或”开头和结尾的其他单词 我目前正在使用此模式: 但我不知道应该使用什么模式来排除以某些特定字符开头和结尾的单词 有人能给我一些关于我应该使用什么模式的建议吗?谢谢你你目前使用的模式是匹配的,因为\b正确地确定了“s和g之间的位置(单词字符[a-zA-Z0-9.和非单词字符之间的位置)。您可以使用以下方法之一: 否定特定字符(负向后/向前看) 此方法允

我想找到不以某些特定字符开头或结尾的单词匹配。

例如,我有这个输入,我只想匹配突出显示的单词:

“字符串”string“字符串”

并排除以开头和结尾的其他单词

我目前正在使用此模式:

但我不知道应该使用什么模式来排除以某些特定字符开头和结尾的单词


有人能给我一些关于我应该使用什么模式的建议吗?谢谢你你目前使用的模式是匹配的,因为
\b
正确地确定了
“s
g
之间的位置(单词字符
[a-zA-Z0-9.
和非单词字符之间的位置)。您可以使用以下方法之一:

  • 否定特定字符(负向后/向前看)
    • 此方法允许您指定要从匹配中求反的字符、字符集或子字符串
    • (?-确保
      不在前面
    • (?![”)
      -确保
      不会继续进行
  • 允许使用特定字符(正向向后看/向前看)
    • 此方法允许您指定字符、字符集或子字符串以确保匹配
    • (?stop
      -请注意,在大多数正则表达式引擎中,lookbehinds中不允许使用量词(
      \s+
    • 类似于
      (?如果字符串位于空格之间,则此正则表达式将拾取字符串:
      \sstring\s

      var sample = "\"string\" string \"string\" astring 'string_ string?string string ";
      var regx = new Regex(@"\sstring\s");
      var matches = regx.Matches(sample);
      foreach (Match mt in matches)
      {
          Console.WriteLine($"{mt.Value} {mt.Index,3} {mt.Length,3}");
      }
      

      (?太好了,谢谢!(?@siggi_pop你是对的,我的答案中解决了疏忽问题。排除哪些单词?英语单词?正则表达式不能匹配语言单词。虽然这并不能真正回答问题,基本上是如何找到
      。OP没有说例如不应找到
      astring
      。字符串开头或结尾没有前导或尾随空格的单词也将被排除在外here@CasimiretHippolyte谢谢你抓住它-现在已经修好了。