我想根据类型组合(例如fricative+plosive, plosive+fricative, plosive+liquid等)搜索某些辅音集群的语音字典(tsv有两列,一列用于单词,另一列用于语音转录:IPA)。我创建了一个连接相应音素的向量:
plosives <- c("p", "b", "t", "d", "k", "g")
fricatives <- c("f", "v", "s", "z", "ʂ", "ʐ", "x")
首先写这些向量的目的是为了在写不同的正则表达式时速记和快速引用每个辅音类型。我想从这两种类型(FP, PF, PP, FF)中搜索所有的双辅音组合。我怎么能写一个正则表达式在R使用这些向量作为模式参数?
我知道crossing (fricatives, plosives)
给我所有的组合作为一个字符串,但我得到一个错误时使用它:CC.all <- str_extract_all(ruphondict$IPA, crossing (fricatives, plosives), simplify = T)
一种基本的正则表达式。
paste(
apply(expand.grid(plosives, fricatives), 1, paste0, collapse = ""),
collapse = "|"
)
请注意,这实际上是一行代码。
paste(apply(expand.grid(plosives, fricatives), 1, paste0, collapse = ""),collapse = "|")
您需要使用|
分隔的字符串作为正则表达式:
plosives <- c("p", "b", "t", "d", "k", "g")
fricatives <- c("f", "v", "s", "z", "ʂ", "ʐ", "x")
my_regex <- (crossing(plosives, fricatives)
|> mutate(comb = paste0(plosives, fricatives))
|> pull(comb)
|> paste(collapse = "|")
)
[1] "bf|bs|bʂ|bv|bx|bz|bʐ|df|ds|dʂ|dv|dx|dz|dʐ|gf|gs|gʂ|gv|gx|gz|gʐ|kf|ks|kʂ|kv|kx|kz|kʐ|pf|ps|pʂ|pv|px|pz|pʐ|tf|ts|tʂ|tv|tx|tz|tʐ"