C# 正则表达式以[开头,以]-仅匹配字结尾
鉴于以下情况:C# 正则表达式以[开头,以]-仅匹配字结尾,c#,regex,C#,Regex,鉴于以下情况: var s = "my [first] ga[m]e and [abc]de]\nThe [Game]" 我使用哪个regex匹配: 0 - [first] 1 - [abc]de] 2 - [Game] 我已经尝试了var pattern2=newregex(@“\W\[.*?\]\W”)但它找不到[游戏] 我还希望能够匹配“[my]玩家\t[pro]” 说明: \[ # Match a [ [^\[]{2,} # Match two or more no
var s = "my [first] ga[m]e and [abc]de]\nThe [Game]"
我使用哪个regex匹配:
0 - [first]
1 - [abc]de]
2 - [Game]
我已经尝试了var pattern2=newregex(@“\W\[.*?\]\W”)代码>但它找不到[游戏]
我还希望能够匹配“[my]玩家\t[pro]
”
说明:
\[ # Match a [
[^\[]{2,} # Match two or more non-[ characters
\] # Match ]
在电视上看
说明:
\[ # Match a [
[^\[]{2,} # Match two or more non-[ characters
\] # Match ]
请参见。除了非单词字符外,还需要明确匹配字符串的开头和结尾:
(?:^|\W)\[(.*?)\](?:$|\W)
捕获组将获得括号内的单词。除了非单词字符外,还需要明确匹配字符串的开头和结尾:
(?:^|\W)\[(.*?)\](?:$|\W)
捕获组将获得括号内的单词。可能重复:进一步阅读:我不认为这是重复的。他不是在寻找平衡的括号([abc]de]
不平衡),他是在寻找单词边界处的括号。可能的重复:进一步阅读:我不认为这是重复的。他不是在寻找平衡的括号([abc]de]
是不平衡的),他是在寻找单词边界处的括号。很好,但尽管有解释,我还是要考虑一下我认为这是行不通的。我将输入更改为my[first]ga[m]e和]de]\n[Game]
,它匹配了[m]e和]de]
@Barmar:是的,正则表达式允许在两个分隔括号之间使用除[
以外的任何字符。规范对“单词”中允许的和不允许的内容不是很清楚。也许\[\S{2,}\]
会更合适(括号之间只允许使用非空格字符)-但这需要OP来指定。我只是将左括号和右括号都放在负数类中,如下所示:\[^[\]{2,}\]
+1.@ridgerunner:这不起作用,因为有些示例包含一个右括号作为要匹配的单词的一部分…很好,但尽管有解释,我还是不得不考虑它。:)我认为这不起作用。我将输入更改为my[first]ga[m]e和]de]\n[Game]
并且它匹配了[m]是的,正则表达式在两个分隔括号之间允许除[
以外的任何字符。规范对“单词”中允许和不允许的字符不是很清楚。也许\[\S{2,}\]
更合适(括号之间只允许非空格字符)-但这仍然需要OP来指定。我只是将左括号和右括号都放在否定类中,如下所示:\[^[\]]{2,}\]
+1.@ridgerunner:这不起作用,因为某些示例包含一个右括号作为要匹配的单词的一部分。。。