C# 正则表达式获取一个字符,后面不跟数字
如果内部没有int,如何获取第一个字符: 我需要看看所有的地方都有C# 正则表达式获取一个字符,后面不跟数字,c#,regex,C#,Regex,如果内部没有int,如何获取第一个字符: 我需要看看所有的地方都有'['后面没有整数 例如: [abc] pass [cxvjk234] pass [123] fail 现在,我有这个: ((([[])([^0-9]))) 它获取前两个字符,而我只需要一个。一般来说,要匹配一些没有数字后跟的模式,需要在表达式中添加一个(?!\d)/(?![0-9]): \[(?!\d) \[(?![0-9]) ^^^^^^^^^ 请参阅。这与任何未紧跟数字的[符号匹配 您当前的正则表达式模式因捕获组
'['
后面没有整数
例如:
[abc] pass
[cxvjk234] pass
[123] fail
现在,我有这个:
((([[])([^0-9])))
它获取前两个字符,而我只需要一个。一般来说,要匹配一些没有数字后跟的模式,需要在表达式中添加一个
(?!\d)
/(?![0-9])
:
\[(?!\d)
\[(?![0-9])
^^^^^^^^^
请参阅。这与任何未紧跟数字的[
符号匹配
您当前的正则表达式模式因捕获组而超载,如果我们删除这些冗余组,它看起来像
(\[)([^0-9])
-它匹配[
,然后是ASCII数字以外的字符
你可以用
(?<=\[)\D
(?一种可能的解决方案是:
\[\D[^]]*\]
# look for [
# \D - not a digit
# anything not ], zero or more times
# followed by ]
请参阅。不要使用太多的括号。括号用于分组和确定返回的匹配项
\[([^0-9])
(?:(?:(?:\[)([^0-9])))
如果您确实需要使用括号,请对该组使用(?:…)
,但不会作为匹配的一部分返回
\[([^0-9])
(?:(?:(?:\[)([^0-9])))
也许您正在搜索的是\[([^0-9])
你希望[123abc]
通过吗?([])
?为什么不直接使用\[/code>?使用@)(?你能检查一下我们的答案,看看它们是否适合你吗?你的描述有点不清楚。