【问题标题】:Pattern matching for swedish character瑞典语字符的模式匹配
【发布时间】:2012-04-20 07:35:11
【问题描述】:

我需要关于正则表达式的帮助。

我必须像这样匹配字符串: âãa34dc

我使用的模式:

\s*[a-zA-Z]+[a-zA-Z_0-9]*\s

但是这种模式不足以识别这种字符串,例如âãa34dc

附: âã 这些是瑞典字符。

请帮我找出这种字符串的正确模式。

【问题讨论】:

  • 一个小的更正,可能不会改变现有答案的有效性:瑞典语中不使用“â”和“ã”,除了拼写外国名称或地方。 OP想要的可能是“åäö/ÅÄÖ”。

标签: c# regex


【解决方案1】:

您真的想将其限制为瑞典语字符吗?换句话说,德国字符不应该匹配吗?如果是这样,那么您可能必须枚举整个字母表,并将其包括在内。

如果您真正想要的是匹配每个字母字符,请使用正则表达式术语来匹配所有字母。

\w 匹配任何单词字符,但包括数字和一些标点符号。这已经接近了,但并不完全符合您第二个任期的要求。

对于第一个术语,您不想包含数字,指定字符应为 Unicode '字母' 类将起作用。 \p{L} 指定所有作为字母的 Unicode 字符。这包括 [a-zA-Z],以及所有瑞典语字符、德语和俄语等。

因此,我认为这个正则表达式就是你想要的:

\s*[\p{L}][\p{L}_0-9]*\s

如果你想包括digits from other character sets,还有一些other punctuation,那么你可以使用[\w]*作为第二任期。

【讨论】:

    【解决方案2】:

    请给出一套规则。

    根据你的问题:

        [X-Ya-zA-Z]{3}[0-9]{2}[a-zA-Z]{2}
    

    将 X 替换为第一个瑞典字母

    将 Y 替换为最后一个瑞典字母

    【讨论】:

    • 规则与英文字母相同。名称可以以瑞典语字符开头,也可以以英文字母开头。所以我想要与我上面写的所有条件相匹配的模式。感谢您抽出宝贵时间,很抱歉没有提出不清楚的问题。
    【解决方案3】:

    John Machin 对此提供了很好的答案。适应他的模式,你需要的可能类似于:\s*[^\W\d_]\w*\s*

    附:我从您的第一部分中删除了 + 量词。任何后续字母都将与后续量化的\w 匹配。

    【讨论】:

    • 规则同英文字母。名称可以以瑞典字符开头,也可以以英文字母开头。它也可以包含数字和下划线。所以我想要与我上面写的所有条件相匹配的模式。你的回答根本没有帮助我解决我的问题。
    • 不,\w[A-Za-z0-9_] 不同。在支持 Unicode 的环境(例如 .NET)中,\w 将匹配任何字母表中的任何字母(包括瑞典语)。你真的费心尝试我的模式吗?
    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 2012-08-13
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 2012-02-04
    • 2011-11-11
    • 1970-01-01
    相关资源
    最近更新 更多