我有一组表达式,表示一些带有一些参数的公式。像:
[parameter1] * [parameter2] * [multiplier]
还有很多人喜欢这样。
我想使用正则表达式,以便我可以得到一个字符串列表(List<string>
),其中包含以下内容:
[paramter1]
[paramter2]
[multiplier]
我不经常使用正则表达式;如果您已经使用过这样的东西,我将不胜感激,如果您可以分享。
谢谢!
答案 0 :(得分:3)
这应该这样做:
\[\w+\]
使用.net:
string s = "[parameter1] * [parameter2] * [multiplier]";
MatchCollection matches = Regex.Matches(s, @"\[\w+\]");
您可能希望在此处使用捕获组:\[(\w+)\]
,因此您在Groups[1]
上拥有参数名称。
答案 1 :(得分:2)
这取决于参数的外观。
正则表达式的一般形式为:
\[{something which matches parameter names}\]
如果参数名称只能包含字母,数字和下划线,那么您需要以下内容:
\[\w+\]
这将匹配包含至少一个字母,数字或下划线的参数名称。例如:
[parameter]
[parameter1]
[1st_parameter]
[10]
[a]
[_]
更常见的限制是接受包含至少一个字母,数字或下划线的参数名称,但必须以字母开头:
\[[a-zA-Z]\w*\]
示例包括:
[parameter]
[parameter1]
[first_parameter]
[a]
但不匹配:
[1st_parameter]
[10]
[_]
但是,您可能会认为它应匹配方括号之间的任何内容,并且任何内容都可以是参数名称(可能您希望稍后验证参数名称)
\[[^]]+\]
将匹配方括号之间的任何内容,只要它包含至少1个字符。
如果您还想允许空方括号(即匹配[]
),那么您需要:
\[[^]]*\]
答案 2 :(得分:1)
正则表达式
\[[^]]*\]
将匹配方括号中的任何内容:
\[ the opening bracket;
[^]] anything but a closing bracket,
* repeated zero or more times;
\] the closing bracket
我不确定这是不是你要求的,但是......