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

标签 regex grep

我有一个名为 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[ŋɡʔ] - 匹配前面带有 a 的 ŋɡʔ Unicode 感知(由于 (*UCP) PCRE 动词)字边界
  • [aiɪueo][ʔŋɡk][aɪiueo] 匹配 ŋɡk ʔ 位于 aiɪue 之间> 和 o 元音(注意 iɪ 不是相同的字母!)

查看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"

输出:

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

关于正则表达式匹配后齿槽辅音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65914231/

相关文章:

regex - 将文本文件转换为单行

javascript - 使用 Javascript RegExp 匹配 "{CHARACTERS}"

python - 提取pandas数据框中某些字符后的数字

linux - 为什么 pgrep 找不到这个进程?

git grep --缓存

java - 使用正则表达式来匹配内容或分隔符哪个更好?

python - django 在列表中使用正则表达式排除 url

带尖括号的正则表达式行为

linux - grep 键值对和格式的值

bash - 使用 grep 或 sed 即时复制和修改复杂的行