汉语拼音正则表达式!!!

汉语拼音正则表达式,网上找了半天没找到简单有用的,自己琢磨了半天!!!终于搞了个简单有用的出来。。。

[A-Z]*[à-ḿ][a-z]*
7 个赞

轻声路过,发现没有给注意上。

亲生的就成了[a-z]了。这个确实没办法。。。

网上找的,不知道行不行:

([āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡa-zA-ZA-Za-z\\s∥-]+)

我一般用 [a-zāáǎàōóǒòńēéěèếềīíǐìḿǹńňūúǔùǖǘǚǜü]+,加上前后文加以限制。

好像还有几个是Unicode没有的


1 个赞


你这个很明显不行。把所有的英文都选进来了。。我是想只选汉语拼音

[B-Z]*[à-ḿ][g-u]*

这样更针对一些,轻声除外

([bcdfghjklmnpqrstwxyz]{0,2}[iuüv]?[āáǎàōóǒòńēéěèếềīíǐìḿǹńňūúǔùǖǘǚǜü][ginour]*)

[bcdfghjklmnpqrstwxyz]{0,2}:声母
[iuüv]?[āáǎàōóǒòńēéěèếềīíǐìḿǹńňūúǔùǖǘǚǜü][ginour]*:韵母。

轻声,在[a-z]+前后加入限制字符串,就行了。


还可以再完美一些

那就再套多一个组

(([bcdfghjklmnpqrstwxyz]{0,2}[iuüv]?[āáǎàōóǒòńēéěèếềīíǐìḿǹńňūúǔùǖǘǚǜü][ginour]*)+)

弄了个emeditor宏。

//拼音匹配:匹配带声调
bAnswer = confirm("拼音匹配:匹配带声调?\r\n匹配后加入标签<py>。\r\n示例:chēn --> <PY>chēn</PY>");
if (bAnswer==true)
		{
			//匹配单字或都词组均带声调。
document.selection.Replace("(([bcdfghjklmnpqrstwxyz]{0,2}[iuüv]?[āáǎàōóǒòńēéěèếềīíǐìḿǹńňūúǔùǖǘǚǜü][ginour]*)+)","<PY>\\1</PY>",eeReplaceAll | eeFindReplaceOnlyWord | eeFindReplaceRegExp,eeExFindRegexOnigmo);
			//匹配词组后面轻声
document.selection.Replace("(?<!<PY>)(([bcdfghjklmnpqrstwxyz]{0,2}[iuüv]?[āáǎàōóǒòńēéěèếềīíǐìḿǹńňūúǔùǖǘǚǜü][ginour]*)+([bcdfghjklmnpqrstwxyz]{0,2}[iuüv]?[aoeiuü][ginour]*|hng))","<PY>\\1</PY>",eeReplaceAll | eeFindReplaceOnlyWord | eeFindReplaceRegExp,eeExFindRegexOnigmo);

		}

//拼音匹配:轻声
bAnswer = confirm("是否继续匹配轻声?\r\n注意:不加条件捕获会可能捕获到英文单词。\r\n匹配后加入标签<PYQS>。\r\n示例:chen --> <PYQS>chen</PYQS>");
		if (bAnswer==true)
		{
			var py=prompt("拼音字符串(默认即可)。","[bcdfghjklmnpqrstwxyz]{0,2}[iuüv]?[aoeiuü][ginour]*|hng")
			var pyb=prompt("拼音前面限制字符串,“\.\$\(\)\[\]\{\}\*\^\+\?\\\|”需要加“\\”","")
			var pya=prompt("拼音后面限制字符串,“\.\$\(\)\[\]\{\}\*\^\+\?\\\|”需要加“\\”","")
			if (py!="")
			{
			//匹配单字
				document.selection.Replace("("+pyb+")("+py+")("+pya+")","\\1<PYQS>\\2</PYQS>\\3",eeReplaceAll | eeFindReplaceOnlyWord | eeFindReplaceRegExp,eeExFindRegexOnigmo);
			//匹配词组无声调。
				document.selection.Replace("("+pyb+")((?<!<PYQS>)("+py+"){2,})("+pya+")","\\1<PYQS>\\2</PYQS>\\4",eeReplaceAll | eeFindReplaceOnlyWord | eeFindReplaceRegExp,eeExFindRegexOnigmo);
								
			}
	 }

1
2

1 个赞

有心了,宏我还没有学习怎么用呢。

抱歉如果答案重複…我用兩個正則。

寬容,可以容納數據的拼音錯誤:
([a-zāáǎàēéěèīíǐìōóǒòūúǔùüǖǘǚǜm̄ḿm̀ńǹ]+)

較嚴格,這不包括無聲調號的輕聲:
([bcdfghjklmnpqrstwyxz]{0,1}[h]{0,1}[iuü]{0,1}[āáǎàēéěèīíǐìōóǒòūúǔùüǖǘǚǜ][iounr]{0,2}[g]{0,1})

拼音不該有的,例如:ǖ、ǖa、iāo、iào、uǎi、uě、uǒ

遇到 词组 带有儿化的,这规则,有点问题。


嗯,我沒修理過現代漢語字典

不知为什么在剪切板运行宏正常,但添加文件后运行时总是提示16后少括号,并且这时剪切板运行也提示?

保存宏文件时,注意保存格式,UTF16,有签名。
未命名

多谢! :heart: :heart: :heart:

楼主整理的挺好的,以后有时间修汉语词典的时候会用的上 :yum: