【问题标题】:Regular expression matching Unicode and Number string匹配 Unicode 和数字字符串的正则表达式
【发布时间】:2017-07-25 08:54:52
【问题描述】:

问题描述

我有字符串 "Վիկտոր1 Ափոյան2" 使用正则表达式我想获取两个字符串的第一个字母。因此,我将有 "ՎԱ" 由于字符串是 unicode 我正在考虑以下正则表达式:

"(\\p{L})\\p{L}*\\s(\\p{L})\\p{L}*

如果字符串不包含数字 "1""2" 效果很好,我还尝试了以下正则表达式:

"(\\p{L}\\p{N})\\p{L}\\p{N}*\\s(\\p{L}\\p{N})\\p{L}\\p{N}*

但这不正确。

是否有类似 "\\p{LN}" 的东西可以同时检查 Unicode 字母和数字,或者任何人都知道我该如何解决这个问题?

【问题讨论】:

    标签: java android regex


    【解决方案1】:

    是否有类似“\p{LN}”的东西会同时检查 Unicode 字母和数字

    使用将匹配 Unicode 字母或数字的字符类 [\p{L}\p{N}]

    或者将\p{Alnum}Pattern.UNICODE_CHARACTER_CLASS 标志一起使用(或在模式前加上(?U))。

    【讨论】:

    • 替换每个 unicode 或数字字符的正则表达式是什么?
    • @Avatar 每个字符都是 Unicode。要匹配任何非数字,请使用 \P{N}\D
    • 哦,我的意思是如何只允许带有 UTF-8 和数字的字母字符。实际上来自stackoverflow.com/q/11989482/1066234 并在这里找到了您的答案。 preg_replace 删除了它们,所以我们需要一个能捕获所有其他的正则表达式。
    • @Avatar [\p{L}\p{N}] 是一个正字符类,它匹配其中定义的任何字符:字母和数字。要匹配除这些字符之外的任何内容,请将字符类设为否定字符类,[^\p{L}\p{N}]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    • 2013-12-25
    相关资源
    最近更新 更多