请考虑以下字符串:
I have been driving to {Palm.!.Beach:100} and it . was . great!!
Run Code Online (Sandbox Code Playgroud)
我使用以下正则表达式删除所有标点符号:
$string preg_replace('/[^a-zA-Z ]+/', '', $string);
Run Code Online (Sandbox Code Playgroud)
这输出:
I have been driving to PalmBeach and it was great!!
Run Code Online (Sandbox Code Playgroud)
但我需要正则表达式始终忽略{和}之间的任何内容.所以期望的输出将是:
I have been driving to {Palm.!.Beach:100} and it was great
Run Code Online (Sandbox Code Playgroud)
我怎样才能让正则表达式忽略{和}之间的内容?
ste*_*ema 16
试试这个
[^a-zA-Z {}]+(?![^{]*})
Run Code Online (Sandbox Code Playgroud)
在Regexr上看到它
mean表示匹配否定字符类中未包含的任何内容,但仅当前面没有前面没有右括号时,这是由负向前瞻完成的(?![^{]*}).
$string preg_replace('/[^a-zA-Z {}]+(?![^{]*})/', '', $string);
Run Code Online (Sandbox Code Playgroud)