将一个正则表达式集成到另一个正则表达式中

时间:2017-12-06 13:05:29

标签: regex

我有以下正则表达式来验证Windows中的路径:

^([A-Za-z]\:|\\|\.)(\\[^\\\/\:\*\?\""\<\>\|]*)+[\\]$

这很好用。路径必须以\

结尾

我有另一个正则表达式,它检查给定的字符串,如果它是一个所谓的宏字符串。宏字符串的语法是:

  • 以$
  • 开头
  • 以$
  • 结尾
  • 可能只包含[A-Za-z0-9] _和:

因此我有正则表达式:

[$][\w:]+(?:[$][\w:]+[$][\w:]+)*[$]

现在我想结合两个正则表达式。

这样我就可以在路径字符串中使用宏字符串。

以下路径应该有效:

  • C:\ temp中\ $ emittemppath $ \

以下路径无效:

  • C:\ temp中\ $发射()TEMPPATH $ \

只需将正则表达式与|连接起来无效路径将被识别为有效。

我的问题也是,我如何将宏正则表达式集成到另一个中。那么它检查$ -chars之间的宏语法?

更新

宏名称必须始终在$

之间

更新2:

识别哪个$属于\可以使用哪个部分

1 个答案:

答案 0 :(得分:1)

你可以做的是使用positive lookahead (?=断言它是一个“宏字符串”:

(?=.*[$][\w:]+(?:[$][\w:]+[$][\w:]+)*[$])

如果是,则可以使用添加部件来验证Windows中的路径。

(?=.*[$][\w:]+(?:[$][\w:]+[$][\w:]+)*[$])^([A-Za-z]\:|\\|\.)(\\[^\\\/\:\*\?\""\<\>\|]*)+[\\]$