c# - 正则表达式得到一个字符后面没有数字

标签 c# regex

如果内部没有 int,如何获取第一个字符:

我需要查看所有在 '[' 后面没有整数的地方。

例如:

[abc] pass
[cxvjk234] pass
[123] fail

现在,我有这个:

((([[])([^0-9])))

它获取前 2 个字符,而我只需要一个。

最佳答案

一般,要匹配一些后面没有数字的模式,你需要添加一个(?!\d)/(?![0-9]) negative lookahead表达:

\[(?!\d)
\[(?![0-9])
  ^^^^^^^^^

参见 regex demo .这匹配任何 [没有紧跟数字的符号。


您当前的正则表达式模式因捕获组而重载,如果我们删除那些冗余的,它看起来像 (\[)([^0-9]) - 它匹配 [然后是 ASCII 数字以外的字符。

你可以使用

(?<=\[)\D

或者(如果您只想将 ASCII 数字与模式匹配)

(?<=\[)[^0-9]

参见 regex demo

详细信息:

  • (?<=\[) - 需要 [ 的正面回顾(但不使用 [ 字符,即不将其作为匹配值的一部分返回)...
  • \D/[^0-9] - 一个非数字。 注意:如果只取反 ASCII 数字,您可以使用 \DRegexOptions.ECMAScript旗帜。

关于c# - 正则表达式得到一个字符后面没有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351442/

相关文章:

c# - 查询需要在 .ThenInclude 之后过滤,使用 .Where 子句

regex - 用多个分隔符拆分字符串,同时在结果中包含运算符

c# - PreFlight 请求 404 未找到 .net web api;对预检请求的响应未通过访问控制检查 : it does not have http ok status

c# - DbContext 全局范围与方法级范围

regex - 正则表达式 "Matching"与 "Capturing"

regex - 使用 sed 匹配除正斜杠之外的非数字

MySQL 字符串模式匹配 - 类似的替代方法

python - 特定字符后的多个正则表达式条件

c# - DbSet 模拟,第二次调用 ToList 时没有结果

c# - 未传递 IActionResult 参数