php - 获取重音 preg_match_all 语法 PHP

标签 php regex

我有这个 preg_match_all 来获取主题标签:

  preg_match_all('/(^|[^a-z0-9_])#([a-z0-9_]+)/ui', $text, $matchedHashtags);

它工作得很好,但如果发现一些强调就会停止:

#hash //works
#hash_hash //works
#hash_não // get just $hash_n

我需要改变什么?

最佳答案

您可以使用 Unicode category 信件


正则表达式:

/(?<![\p{L}0-9_])#([\p{L}0-9_]+)/u

regex101 Demo

  • 另一种选择是在 character class 中简单地包含重音字符:

    /(?<![a-zãàÀèÈìÌ0-9_])#([a-zãàÀèÈìÌ0-9_]+)/ui
    

[编辑]


关于\p代币

当设置了 /u 标志时支持 Unicode。有一些匹配字母的替代方法,使用以下类别或脚本:

1。 \p{Latin} 拉丁脚本

  • 匹配项:Latin script characters来自英语、法语、德语、意大利语、越南语、拉丁语本身和其他几种语言(包括一些修饰字母和其他字母)。
  • 代码点:1,349

2。 \p{L&} 无大小写字母

3。 \p{L} 所有字母

4。 \p{Xan} 任何字母数字字符

  • 匹配:\p{L}\p{N} Number (来自任何脚本)。
  • 代码点:18,843 (18,057 + 786)

5。 \p{Xwd} 任何 Perl“单词”字符

  • 匹配:\p{Xan} 和下划线。
  • 代码点:18,844

关于php - 获取重音 preg_match_all 语法 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33026519/

相关文章:

php - 没有静态 IP,但需要限制对特定位置的访问

regex - 大厨 Knife ssh sed命令

regex - grep 文件内完整的资源 url

java - 如何在Java中找到与正则表达式匹配的子字符串的开始和结束索引?

php - is_null($var) 和 ($var === null) 有什么区别?

java - 尝试使用 Java 连接 https 服务器时抛出 SSLHandshakeException

php - Symfony 串行器组件 : Deserialize array of objects of mixed types

php - PHP 中不区分大小写的查询不起作用

Python Regex 读取 c 风格注释

javascript - Javascript 中的 RegEX 来匹配单词集