Regex 搜索三个用不同字体书写的单词;“形状”;使用grep
我有一个包含以下内容的文本文件:Regex 搜索三个用不同字体书写的单词;“形状”;使用grep,regex,grep,regex-group,cyrillic,Regex,Grep,Regex Group,Cyrillic,我有一个包含以下内容的文本文件: **gvožđa gvozda gvozdja гвожђа 这是四个字,但每一个都意味着一件事:铁 “d”、“dj”、“đ”、“ђ”是四个字母,表示一个“电话” 我使用以下grep公式搜索这三个单词: grep '\s*[gг][vв]o[žжz](dj|[dđђ])a\s*' filename 这个grep命令根本不提供任何输出。为什么? 它应该在文件中给出所有这些词: gvožđa gvozda gvozdja гвожђа 出现此问题的原因是,您的
**gvožđa gvozda gvozdja
гвожђа
这是四个字,但每一个都意味着一件事:铁
“d”、“dj”、“đ”、“ђ”是四个字母,表示一个“电话”
我使用以下grep公式搜索这三个单词:
grep '\s*[gг][vв]o[žжz](dj|[dđђ])a\s*' filename
这个grep命令根本不提供任何输出。为什么?
它应该在文件中给出所有这些词:
gvožđa
gvozda
gvozdja
гвожђа
出现此问题的原因是,您的模式与西里尔语
和а
不匹配,并且您使用的POSIX ERE模式没有-E
选项
你可以用
grep-Eo'[gΓ][vа][oжz](dj|[dđђ][aа]文件名
使用\s*
实际上没有意义,因为它只匹配零个或多个空格字符(仅在GNUgrep
中)
我在这里添加了-o
选项来输出所有匹配项,而不仅仅是匹配行
请参阅。您忘记了-E
,grep-E'\s*[gΓ][vж]o[žжz](dj|[dđђ])a\s*
。或者escape|
(将在GNUgrep
中工作),以及(
和)
,因为您使用的是POSIX BRE模式。使用grep-E
不能解决此问题。没有解决我的问题。如果我运行这个egrep'\s*[gΓ][vö]o[žжz](dj|[dđђ])a\s*'filename
,那么我得到这个输出:gvoža gvozda gvozdja,但没有得到这个。它也应该给出这样的答案:Γжжда。正确,你没有在问题中解释这个问题。这是因为西里尔字母a不等于ASCII字母a。这同样适用于o
和of
。使用grep-Eo'[gΓ][vö][oжz](dj|[dđђ][aа]
。实际上,我不明白你为什么使用\s*
。