Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 搜索三个用不同字体书写的单词;“形状”;使用grep_Regex_Grep_Regex Group_Cyrillic - Fatal编程技术网

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*
实际上没有意义,因为它只匹配零个或多个空格字符(仅在GNU
grep
中)

我在这里添加了
-o
选项来输出所有匹配项,而不仅仅是匹配行


请参阅。

您忘记了
-E
grep-E'\s*[gΓ][vж]o[žжz](dj|[dđђ])a\s*
。或者escape
|
(将在GNU
grep
中工作),以及
,因为您使用的是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*