[英]regex to match string that contains brackets
我正在读取文件并通过检查每一行来验证文件的内容。 字符串行如下所示:
CMD: [THIS_IS_THE_CMD]
DELAY: [5]
FLAGS: [ANY]
我需要检查的是,该行遵循该确切的形式,括号之间的内容是文本(我已尝试[A-Z_]但它不起作用)或取决于行的数字。
到目前为止我所拥有的:
string line = "CMD: [THIS_IS_THE_CMD]";
if(!VerifyLine(@"^CMD: \[", line))
{
// No match, set error
}
private static bool VerifyLine(string regExp, string line)
{
Regex reg = new Regex(regExp);
return reg.IsMatch(line);
}
但这不会检查括号之间的内容,也不会检查结束括号。
这应该为你做:
([A-Z_]*):\s*\[(\w*)\]
第一组匹配冒号前的部分,第二组匹配[] s内的部分。
第一部分可以是任何大写字母或下划线,第二部分可以是任何情况下的任何字母数字字符,或下划线。
此外,您可以使用以下附加功能,这些附加功能需要使^ $匹配EOL而不仅仅是BOF和EOF的选项:
^([A-Z_]*):\s*\[(\w*)\]$ // will only match whole lines
^\s*([A-Z_]*):\s*\[(\w*)\]\s*$ // same as above but ignores extra whitespace
// on the beginning and end of lines
您可能会使用不同的东西来捕获组,具体取决于您的文件格式:
[A-Z] // matches any capital letter
[A-Za-z] // matches any letter
[A-Za-z0-9] // matches any alphanumeric character
\w // matches any "word character", which is any alnum character or _
试试这个: ^\\w+:\\s*\\[(\\w+)\\]
, \\w
将匹配字母,数字和下划线
另一种模式只匹配大写: ^[AZ\\d_]+:\\s*\\[([AZ\\d_]+)\\]
你试过^CMD: \\[
,但你的Regex
包含Space 。 请注意,在正则表达式中,您必须使用\\s
来匹配空格。 试试你的正则表达式,但使用\\s
:
if(!VerifyLine(@"^CMD:\s*\[", line))
...
说明:
\s Matches any white-space character.
* Matches the previous element zero or more times.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.