正则表达式匹配后牙槽辅音

问题描述

我有一个名为 a.txt 的文本文件,其中包含以下元素:

fall#i#1    fall (as a fruit) (v.)  fall    jatuh   fall (as a fruit) (v.)  jatuh*  t͡ʃampaʔ
dog#n#1 dog dog anjing  dog anjing  ŋand͡ʒi
wing#n#1    wing    wing    sayap   wing    sayap   kopaʔ
fly#i#1 fly (v.)    fly (vb)    terbang fly (v.)    terbang tobaŋ
mosquito#n#1    mosquito    mosquito    nyamuk  mosquito    nyamuk  ɲamuʔ
flower#n#2  flower  flower  bunga (yg jadi buah),kuntum    flower  bunga*  buŋo
sky#n#1 sky sky langit  sky langit* ʔlaŋɪt

首先,我需要一个正则表达式来匹配具有最终后牙槽辅音的行,如 [ŋɡʔ],输出应如下所示:

fall#i#1    fall (as a fruit) (v.)  fall    jatuh   fall (as a fruit) (v.)  jatuh*  t͡ʃampaʔ
wing#n#1    wing    wing    sayap   wing    sayap   kopaʔ
fly#i#1 fly (v.)    fly (vb)    terbang fly (v.)    terbang tobaŋ
mosquito#n#1    mosquito    mosquito    nyamuk  mosquito    nyamuk  ɲamuʔ

其次,我需要一个正则表达式来匹配词首的后牙槽骨,输出应该是这样的:

dog#n#1 dog dog anjing  dog anjing  ŋand͡ʒi
sky#n#1 sky sky langit  sky langit* ʔlaŋɪt

第三,我需要一个正则表达式来匹配像这样输出的元音之间的后牙槽:

flower#n#2  flower  flower  bunga (yg jadi buah),kuntum    flower  bunga*  buŋo
sky#n#1 sky sky langit  sky langit* ʔlaŋɪt

我曾经在 Ubuntu 终端中使用这个正则表达式来匹配它们:

grep -P '\b[ʔŋɡk]|[ʔŋɡk]\b|[aiueo][ʔŋɡk][aiueo]' a.txt

但我找不到一个正则表达式来分别匹配它们我的意思是在最后匹配后牙槽骨另一个正则表达式匹配仅在开头和元音之间的一个正则表达式匹配任何人都可以帮助我谢谢

>

解决方法

您可以使用的正则表达式是

grep -P '(*UCP)[ŋɡʔ]\b' file           # 1
grep -P '(*UCP)\b[ŋɡʔ]' file           # 2
grep -P '[aiɪueo][ʔŋɡk][aɪiueo]' file  # 3

哪里

  • (*UCP)[ŋɡʔ]\b - 匹配 ŋɡʔ 后跟可识别 Unicode 的(由于 (*UCP) PCRE 动词)词边界
  • (*UCP)\b[ŋɡʔ] - 匹配前面带有 Unicode 感知的 ŋɡʔ(由于 (*UCP) PCRE 动词)词边界
  • [aiɪueo][ʔŋɡk][aɪiueo] 匹配 ŋɡ、{{1} 之间的 kʔai }、ɪue 元音(注意 oi 不是同一个字母!)

查看grep demo

ɪ

输出:

s='fall#i#1    fall (as a fruit) (v.)  fall    jatuh   fall (as a fruit) (v.)  jatuh*  t͡ʃampaʔ
dog#n#1 dog dog anjing  dog anjing  ŋand͡ʒi
wing#n#1    wing    wing    sayap   wing    sayap   kopaʔ
fly#i#1 fly (v.)    fly (vb)    terbang fly (v.)    terbang tobaŋ
mosquito#n#1    mosquito    mosquito    nyamuk  mosquito    nyamuk  ɲamuʔ
flower#n#2  flower  flower  bunga (yg jadi buah),kuntum    flower  bunga*  buŋo
sky#n#1 sky sky langit  sky langit* ʔlaŋɪt'
grep -P '(*UCP)[ŋɡʔ]\b' <<< "$s"
echo "----"
grep -P '(*UCP)\b[ŋɡʔ]' <<< "$s"
echo "----"
grep -P '[aiɪueo][ʔŋɡk][aɪiueo]' <<< "$s"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...