连续2个相同字符串的正则表达式

时间:2018-05-18 13:25:13

标签: regex

所以我正在尝试为以下模板创建一个正则表达式。

[a1B2c3]Hello/Hello.xcl

所以

  • a1B2c3]hello/hello.xcl会通过
  • [a1B2c3]Hello/hello.xcl失败
  • [a1B2c3]hello/hello.xc失败
  • \[[\da-zA-Z]+\][a-z]+\/[a-z]+\.xcl$ 失败

到目前为止,我已尝试过以下内容:

{{1}}

如何检查中间字符串是否相同?

2 个答案:

答案 0 :(得分:2)

使用反向引用:

\[[a-zA-Z0-9]+\]([^/]+)/\1\.xcl

括号中的术语表示路径的第一部分。然后我们可以使用\1在正则表达式中引用它。

根据您打算如何使用此正则表达式,您可能需要可选的起始和结束锚点(^$)。

Demo

答案 1 :(得分:0)

您可以capture括号后的部分,并在/之后使用backreference

^\[[\da-zA-Z]+]([A-Za-z]+)\/\1\.xcl$
               ^^^^^^^^^^   ^^ 

请参阅regex demo

<强>详情

  • ^ - 字符串的开头
  • \[ - [
  • [\da-zA-Z]+ - 1个字母数字字符
  • ] - ]字符
  • ([A-Za-z]+) - 捕获第1组:一个或多个字母
  • \/ - 斜线
  • \1 - 捕获第1组值的反向引用
  • \.xcl - .xcl substring
  • $ - 字符串结束。

注意:如果您不关心括号内可以使用哪种字符,则可以将[\da-zA-Z]+替换为[^\]]+

注意2:如果您想匹配/两端的任何字符,请将([A-Za-z]+)替换为([^\/]+)