Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 正则表达式-提取前缀为@或的单词#_Php_Regex - Fatal编程技术网

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中工作

注:

  • \p{L}
    告诉它匹配unicode“字母”
  • 你不需要把整件事都用括号括起来,因为整个匹配总是第一组

  • 这是家庭作业吗?不管怎样,请发布您迄今为止尝试过的内容。不,我需要在我正在工作的网站上提取带有@as位置和#as标记的单词。我搜索了SO,但没有找到这个例子,只有带数字或子字符串的否定词(不是单个字符)。请参阅我的第二句话。我不是想挑你的毛病,但是通过展示你的努力,更多的人会更乐意帮助你:)所以帮助我们帮助你
    preg\u match\u all('/[@#]]\p{L}+/u',$query,$results)
    。谢谢