Php 正则表达式-提取前缀为@或的单词#
如果我有一根绳子Php 正则表达式-提取前缀为@或的单词#,php,regex,Php,Regex,如果我有一根绳子 This is a @really nice#day. 在第一次通过时我应该得到作为输出/结果的单词真的和天(结果不应该包含点或任何其他标点符号,也不应该只匹配A-Z、A-Z和其他所有字符,因为字符串可能包含国际字符,所以请记住这一点) 在第二遍时,我应该把所有的东西都拿出来,除了那两个单词和标点符号 This is a nice 正则表达式是通过PHP完成的 编辑:@hochl ([@#]\w+)的问题是它不能捕捉像šŠŠŠŠŠŠŠ这样的国际字符,因此ŠdayŠ只能识别为
This is a @really nice#day.
在第一次通过时我应该得到作为输出/结果的单词真的
和天
(结果不应该包含点或任何其他标点符号,也不应该只匹配A-Z、A-Z和其他所有字符,因为字符串可能包含国际字符,所以请记住这一点)
在第二遍时,我应该把所有的东西都拿出来,除了那两个单词和标点符号
This is a nice
正则表达式是通过PHP
完成的
编辑:@hochl
([@#]\w+)
的问题是它不能捕捉像šŠŠŠŠŠŠŠ
这样的国际字符,因此ŠdayŠ
只能识别为Šday
来捕捉国际字符,您可以使用以下方法:
[@#]\p{L}+
您需要使用unicode修饰符/u
,才能在php中工作
注:
告诉它匹配unicode“字母”\p{L}
- 你不需要把整件事都用括号括起来,因为整个匹配总是第一组
这是家庭作业吗?不管怎样,请发布您迄今为止尝试过的内容。不,我需要在我正在工作的网站上提取带有@as位置和#as标记的单词。我搜索了SO,但没有找到这个例子,只有带数字或子字符串的否定词(不是单个字符)。请参阅我的第二句话。我不是想挑你的毛病,但是通过展示你的努力,更多的人会更乐意帮助你:)所以帮助我们帮助你
preg\u match\u all('/[@#]]\p{L}+/u',$query,$results)
。谢谢