所以我正在尝试为以下模板创建一个正则表达式。
[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}}
如何检查中间字符串是否相同?
答案 0 :(得分:2)
使用反向引用:
\[[a-zA-Z0-9]+\]([^/]+)/\1\.xcl
括号中的术语表示路径的第一部分。然后我们可以使用\1
在正则表达式中引用它。
根据您打算如何使用此正则表达式,您可能需要可选的起始和结束锚点(^
和$
)。
答案 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]+)
替换为([^\/]+)
。