提问人:Delphine 提问时间:11/17/2023 最后编辑:user3783243Delphine 更新时间:11/17/2023 访问量:36
正则表达式 :捕获特定字符串之前的所有字母和数字
Regexp : catching all letters and numbers before a specific string
问:
为了替换,我想捕获一个特定字符串之前的所有字母和数字。preg_replace
示例:[email protected] 结果:[email protected]
我试过了,但它只得到最后一个匹配项(([a-z]*[^\.\-\_]*)|\d*[^\.\-\_]*)(?=(@(?:[\w-]+\.)+[\w-]{2,4}))
答:
1赞
Wiktor Stribiżew
11/17/2023
#1
你可以使用
preg_replace('/[a-zA-Z0-9](?=[^\s@]*@)/', 'a', $text)
preg_replace('/[^\W_](?=[^\s@]*@)/', 'a', $text)
请参阅正则表达式演示。
详
[^\W_]
/[a-zA-Z0-9]
- 字母或数字(?=[^\s@]*@)
- 紧挨着右边,除了空格之外,必须有零个或多个字符,然后是一个字符。@
@
评论
preg_replace('/[a-zA-Z0-9](?=[^\s@]*@)/', 'a', $text)
或preg_replace('/[^\W_](?=[^\s@]*@)/', 'a', $text)