[英]What is the Regex For the following pattern
要求:
1)因此,基本上我需要反引号中的单词必须为[A-Za-z0-9] +
2)记号中的单词数量未知,但必须按顺序并用逗号分隔
3)在“ FROM”之后,字符串必须为[A-Za-z0-9] +
这是我到目前为止所拥有的:
String command = "SHOW TABLE COLUMNS `abcdf123`,`abcdf123`,`abcdf123` FROM ABCDF123";
Match CMD = Regex.Match(command, @"SHOW(\s+)TABLE(\s+)COLUMNS(\s+)(a sequence of words enclosed in backticks seperated by a coma)(\s+)FROM(\s+)([A-Za-z0-9]+)", RegexOptions.IgnoreCase);
if (CMD.Success)
return true;
else
return false;
任何想法都会大大加深我对Regex还是陌生的
这样做:
\ASHOW TABLE COLUMNS (?:`(?<column_name>[a-zA-Z0-9]+)`,?)+ FROM (?<table_name>[a-zA-Z0-9]+)\z
如果反引号对之间存在非字母数字字符,则失败。
所有字母数字。 预期通过。
SHOW TABLE COLUMNS `abcdf123`,`abcdf123`,`abcdf123` FROM ABCDF123
已配对
一对反引号之间的单个非字母数字字符。 预期会失败。
SHOW TABLE COLUMNS `abcdf123`,`abcdf123*`,`abcdf123` FROM ABCDF123
没有比赛
表名称中的单个非字母数字字符。 预期会失败。
SHOW TABLE COLUMNS `abcdf123`,`abcdf123`,`abcdf123` FROM ABCDF123*
没有比赛
考虑以下正则表达式...
SHOW(\s+)TABLE(\s+)COLUMNS(\s+)(\`[\w\d]*?\`\,?)+FROM(\s+)([A-Za-z0-9]+)
祝好运!
用于匹配命令字符串的正则表达式为:
^[^`]*?`([^`]+)`+[\s\S]*?FROM\s+([a-zA-Z\d]+)[\s\S]*$
`([^`]+)` - will match data between backticks and the matching continues until
FROM is encountered.
([a-zA-Z\d]+) - will match text after FROM clause (expecting that there is
atlest one space after FROM)
可以使用\\ 1(组1匹配)获得反引号匹配的文本,使用\\ 2(组2匹配)获得FROM子句之后的文本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.