如何将标记日语字符串拆分为原子部分?

时间:2015-12-04 12:24:12

标签: c# regex

考虑我有一个字符串如下。

string input = "合{あい}気{き}道{どう}生{う}まれる昨日{きのう}から揚{あ}げそば";

我想要的是一个数组,如下所示。

string[] output = {"合{あい}", "気{き}", "道{どう}", 
                   "生{う}", "まれる", "昨日{きのう}", 
                   "から", "揚{あ}", "げそば"};

查找原子部分的伪规则:

  • 一个或多个汉字字符后跟{,后跟一个或多个平假名字符,后跟}

  • {}之间未包含的一个或多个平假名字符。

我不熟悉正则表达式。我也不知道如何区分汉字和平假名。你能帮我解决一下C#?

1 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式:

[一-龯]+{\p{IsHiragana}+}|\p{IsHiragana}+(?![^{}]*})

请参阅regex demo

它包含两个选择:

  • [一-龯]+{\p{IsHiragana}+} - 匹配1个或多个汉字([一-龯]+,借用terrancesnyder),后跟{...}内的一个或多个平假名符号或......
  • \p{IsHiragana}+(?![^{}]*}) - 一个或多个平假名后面没有{}以外的字符,然后是}