我需要对包含非英语字符(西班牙语、法语、德语和俄语)的文本执行正则表达式匹配。
我希望匹配忽略大小写,所以对于英语字符,我只会使用/i
修饰符,但这对于像übermäšig这样的单词不起作用。
最简单的编写正则表达式的方法是什么,比如说,同时匹配übermäßig和ÜbermÄßig?在Perl中,是否可以使用相同的方法将大写非英语字母转换为小写等效字母?
它对我有用。你需要使用utf8;
吗?
(免责声明:我不懂Perl。)
如果字符串使用Perl的内部编码,/i
修饰符工作得很好。
例如,这会打印“是”:
perl -le 'use utf8; print "yes" if "ÜBERMäßig" =~ /überMÄßiG/i'
“使用utf8
”告诉Perl我的源代码是用UTF-8编码的,因此Perl将源代码中的所有文本字符串从UTF-8解码为其内部编码。如果不使用utf8,此示例将无法运行。
如果您的字符串来自其他地方,那么您可能需要应用Encode::decode
-或者告诉您的源代码来生成正确解码的字符串(例如,可能使用大多数DBI
驱动程序)。
它工作得非常好
$ perl -E'use utf8; say "ÜBERMÄẞIG" =~ /^übermäßig\z/i ? "match" : "no match"'
match
$ perl -E'use utf8; say "ÜBERMÄSSIG" =~ /^übermäßig\z/i ? "match" : "no match"'
match
(使用utf8;
表示源代码使用UTF-8编码。在剧本中不可能有其他任何方式的角色。)
我怀疑是编码问题,这意味着你认为你给了Perl“ß”,而你没有。这也可能是因为你使用的是旧版本的Perl,不能正确处理多字符折叠。一般来说,使用/u
,可能会有所帮助,但对于本例来说,这并没有什么区别。
问题内容: 我想使用JavaScript从我的URL中提取查询字符串,并且想要对查询字符串名称进行不区分大小写的比较。这是我在做什么: 但是上面的代码进行区分大小写的搜索。我尝试过,但没有帮助。知道如何实现吗? 问题答案: 您可以添加“ i”修饰词,表示“忽略大小写”
问题内容: 我正在尝试使用以下程序使用正则表达式删除字符串中的某些单词。它可以正确删除,但只考虑大小写。如何使其不区分大小写。我坚持使用方法,但是没有用。 输出: 问题答案: 您需要将模式中要区分大小写的部分放在 前面 : 看见 我已将要删除的关键字周围的空格替换为单词边界()。之所以出现问题,是因为可能有两个关键字一个接一个地被一个空格隔开。 如果仅当关键字被 空格 包围时才想删除它们,则可以使
我需要查找以三个小写字母开头的文件,但由于某种原因,我遇到了不希望的不区分大小写的行为。我正在使用带有 -regex 选项的查找,但它甚至可以找到以大写字母开头的文件。 打印内容与以下内容相同: 如果我不使用一系列字符,而是使用一个字符,则工作方式与敏感字符相同,只打印小写文件。 我尝试过使用不同的正则表达式类型,结果是相同的。 此外,白鹭似乎也起作用: 为什么在使用字符范围时“find-rege
问题内容: 在Python中,我可以使用以下命令将正则表达式编译为不区分大小写: 有没有办法做同样的事情,但是不用。在文档中找不到Perl的后缀(例如)。 问题答案: 传递到的PARAM ,或:
问题内容: 现在,当然,我可以编写正则表达式来处理这两种情况,例如,但是我的正则表达式是由用户提供的字符串构造的: 名字在哪里。可能类似于“西北偏北”。现在,对我来说,最明显的解决方案是遍历每个字符,并为每个字母写“ [nN]”: 但是我觉得这是一个不太优雅的解决方案。速度并不是真正的问题,但是我需要知道是否还有另一种方法。 问题答案: 您可以将不区分大小写的标志设置为正则表达式中的第一项。 您可
本文向大家介绍如何测试Java字符串是否包含不区分大小写的正则表达式模式,包括了如何测试Java字符串是否包含不区分大小写的正则表达式模式的使用技巧和注意事项,需要的朋友参考一下 语法?i:x使字符串搜索不区分大小写。例如
我需要一个像
我已经查看了此链接和此链接以及其他几个链接,但它们似乎都无法仅使用纯正则表达式解决此问题(...不使用替换等)。 输入字符串: 我想要的输出是:< code>[“车辆服务”、“自动加油机”] 这是我的尝试: ['车辆服务','自动加油机'] 我有一个下面的解决方案,但我不喜欢它,因为它使用了一个额外的“替换”方法。我正在寻找一个纯正则表达式的拆分。 ['车辆服务','自动加气机'] 更新:我的要求