我有一个简单的模式,我试图找到并替换.它需要用数字包围的句点替换所有短划线.
替换这些期间:
3-54
32-11
111-4523mhz
Run Code Online (Sandbox Code Playgroud)
喜欢如此:
3.54
32.11
111.4523mhz
Run Code Online (Sandbox Code Playgroud)
但是,我不想在这些内容中替换破折号:
Example-One
A-Test
Run Code Online (Sandbox Code Playgroud)
我尝试过使用以下内容:
preg_replace('/[0-9](-)[0-9]/', '.', $string);
Run Code Online (Sandbox Code Playgroud)
但是,这将取代整个比赛,而不仅仅是中间.你怎么只替换比赛的一部分?
soi*_*mon 10
preg_replace('/([0-9])-([0-9])/', '$1.$2', $string);
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩:)
编辑:更多解释:
通过使用(和)在正则表达式中,您可以创建一个组.该组可用于替换.$1替换为第一个匹配的组,$2替换为第二个匹配的组,依此类推.
这意味着如果您(仅举例)更改'$1.$2'为'$2.$1',则操作将交换这两个数字.在您的情况下,这不是有用的行为,但也许它可以帮助您更好地理解原则.