我需要用驼峰Case字符和a替换一些camelCase字符-.
我得到的是一个像这样的字符串:
Albert-Weisgerber-Allee 35
Bruninieku iela 50-10
Run Code Online (Sandbox Code Playgroud)
这些字符串正在通过这个正则表达式来分隔街道上的数字:
$data = preg_replace("/[^ \w]+/", '', $data);
$pcre = '\A\s*(.*?)\s*\x2f?(\pN+\s*[a-zA-Z]?(?:\s*[-\x2f\pP]\s*\pN+\s*[a-zA-Z]?)*)\s*\z/ux';
preg_match($pcre, $data, $h);
Run Code Online (Sandbox Code Playgroud)
现在,我有两个问题.
我在正则表达式上非常糟糕.
上面的正则表达式也削减-了街道名称中的每一个,并且在德国和欧洲有很多这样的名字.
实际上,调整正则表达式以便不剪切任何连字符是很容易的,但我想了解正则表达式是如何工作的,所以我决定尝试找到一个正则表达式,只替换字符串中的每个驼峰字母.
- & matched Camel Case letter
Run Code Online (Sandbox Code Playgroud)
除了第一个大写字母外观.
我已经设法找到一个正则表达式,向我显示我需要粘贴连字符的地方,如下所示:
.[A-Z]{1}/ug
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/qI2iA9/1
但是我怎么替换这个字符串:
AlbertWeisgerberAllee
Run Code Online (Sandbox Code Playgroud)
它变成了
Albert-Weisgerber-Allee
Run Code Online (Sandbox Code Playgroud)
小智 5
要在大写之前插入破折号,请使用此正则表达式:
$string="AlbertWeisgerberAllee";
$string=preg_replace("/([a-z])([A-Z])/", "\\1-\\2", $string);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1278 次 |
| 最近记录: |