【发布时间】:2014-08-13 03:15:19
【问题描述】:
我第一次在正则表达式中使用捕获组,我想知道我的问题是什么,因为我假设正则表达式引擎从左到右查看字符串。
我正在尝试将 UpperCamelCase 字符串转换为连字符小写字符串,例如:
HelloWorldThisIsATest => hello-world-this-is-a-test
我的前置条件是一个字母字符串,所以我不需要担心数字或其他字符。这是我尝试过的:
mb_strtolower(preg_replace('/([A-Za-z])([A-Z])/', '$1-$2', "HelloWorldThisIsATest"));
结果:
hello-world-this-is-atest
这几乎是我想要的,除了a 和test 之间应该有一个连字符。我已经将A-Z 包含在我的第一个捕获组中,因此我假设引擎会看到AT 并将其连字符连接起来。
我做错了什么?
【问题讨论】:
-
"HelloWorldHTMLTest"怎么样?应该变成"hello-world-html-test"还是"hello-world-h-t-m-l-test"? -
@Jack 有趣的用例我没想到……我会说第一个。
标签: php regex string backreference camelcasing