请解释这个正则表达式
正则表达式对我来说是完全无效的。
我现在正在TextMate中处理一个我想要它做的事情...但我不知道为什么它做了我想做的事情。
/[[:alpha:]]+|( )/(?1::$0)/g
这在TextMate片段中使用,它所做的是获取Label并将其作为id名称输出。因此,如果我在第一个点输入“First Name”,则输出“FirstName”。
以前它看起来像这样:
/[[:alpha:]]+|( )/(?1:_:/L$0)/g (it might have been L instead)
这会将“First Name”变为“first_name”。
所以我得到了下划线为空格添加下划线,并且/ L降低了所有内容...但我无法弄清楚其余部分的作用或原因。
有人在乎一块一块地解释它吗?
编辑
以下是有问题的实际代码段:
<column header="$1"><xmod:field name="${2:${1/[[:alpha:]]+|( )/(?1::$0)/g}}"/></column>
没有找到相关结果
已邀请:
5 个回复
鞋扣蚊冈借
最后的“g”设置意味着进行全局替换,而不是仅仅将正则表达式限制为特定的行或选择。 进一步打破......
这与字母数字字符(在参数
中保存)或可选的空格(在匹配参数
中保持)匹配。
正如罗杰所说,
表明这部分是有条件的。如果在参数
中找到匹配,那么它将替换为冒号
之间的东西 - 在这种情况下没有。如果
中没有任何内容,则匹配将被替换为
的内容,即不是空格的任何字母数字字符输出不变。 这解释了为什么在第一个示例中删除了空格,并且在第二个示例中空格将替换为下划线。 在第二个表达式中,
用于小写文本。 评论中的额外问题是如何在TextMate之外运行此表达式。以
为例,我将其分解为多个步骤:
上面命令的第一部分告诉vi从行
开始运行一个
ubstitution并在文件末尾结束(这就是
的含义)。 表达式的其余部分使用与上面解释的相同类型的规则,尽管vi中的一些符号有点自定义 - 请参阅此参考网页。
舶啥戚
蔬谢窗港
或空格
的任何字母字符。
舞备联
是一个条件,用于在匹配组1(单个空格)时剥离匹配,或者如果组1不匹配则将匹配替换为
。由于
是整场比赛,在这种情况下它会被自己取代。这个正则表达式与:
即删除所有空格。
这个正则表达式仍然使用相同的条件,除非现在如果组1匹配,则用下划线替换,否则使用完全匹配(
),由
修改。
改变了之后所有文本的大小写,因此
将导致
;把它想象成一个特殊的控制代码。
课刊灭似