繁体   English   中英

正则表达式是什么用于以下模式

[英]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

正则表达式可视化

Debuggex演示

如果反引号对之间存在非字母数字字符,则失败。

测试1

所有字母数字。 预期通过。

SHOW TABLE COLUMNS `abcdf123`,`abcdf123`,`abcdf123` FROM ABCDF123

已配对

测试2

一对反引号之间的单个非字母数字字符。 预期会失败。

SHOW TABLE COLUMNS `abcdf123`,`abcdf123*`,`abcdf123` FROM ABCDF123

没有比赛

测试3

表名称中的单个非字母数字字符。 预期会失败。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM