c# - 正则表达式检测单词是否是字符串的一部分并且下一个单词是否未大写

标签 c# regex

我正在寻找一个正则表达式,它可以匹配给定字符串中的一个或多个特定单词,但有限制 - 如果模式后面有一个单词,则该单词不应大写。 我们假设这些单词是“Base Case”,所以这里有一些示例

  • 最终基本案例 - 应匹配
  • 最终基本案例财务 - 应匹配
  • 最终基本案例财务 - 不应匹配(下一个单词“财务”大写)
  • 最终基本案例 - 不应匹配(“Case”和“Cases”不匹配)

我使用以下正则表达式来确定我的单词是否是字符串的一部分

\bBase Case(?!\w)

有人可以帮我修改我的正则表达式以添加对下一个大写单词的限制吗?

最佳答案

您需要在搜索模式后检查两种情况:

  1. 字符串结尾($);或
  2. 另一个不以大写字母开头的单词 (\s+[^A-Z\s])

您可以使用此正则表达式来做到这一点:

\bBase Case(?=$|\s+[^A-Z\s])

请注意,由于前瞻的后半部分在下一个单词之前断言了一个空格,因此它会阻止基本情况或类似情况的匹配。

Demo on regex101

关于c# - 正则表达式检测单词是否是字符串的一部分并且下一个单词是否未大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62186903/

相关文章:

c# - 获取正确的名称值而不是 Microsoft.SharePoint.Client.FieldUserValue

c# - 即使在启用 CORS 后,我也无法访问客户端上的 Response.Headers ("Content-Disposition")

正则表达式:匹配除以Thanks/结尾的任何字符串

javascript - 如何仅替换以下正则表达式 (JavaScript) 的一部分?

Ruby RegEx 问题 text.gsub[^\W-], '' ) 失败

java - replaceAll 边界和异常(exception)

c# - 无法实现具有约束的基于多个泛型参数的方法?

c# - .NET 罗斯林 : runtime configuration

c# - 将子属性绑定(bind)到 DataGridView

regex - 如何使用# 作为 CoffeeScript heregex 的一部分?