Regex 是否有正则表达式方法来检测字符是否可以是单词的一部分?

Regex 是否有正则表达式方法来检测字符是否可以是单词的一部分?,regex,vb.net,Regex,Vb.net,这个问题的“棘手”部分是,我所说的alphabeth不仅仅是26个字符。它还应该包括任何类似字母贝斯的东西,包括重音字符和希伯来语的alibeth等 为什么我需要它们 我想把课文分成几个字 alphabeth与拉丁字母alphabeth、希伯来语的alibeth、阿拉伯字母abjads一样,是由空间分隔的 汉字之间没有任何分隔 所以我想我应该用任何不是字母的东西来分隔文本 换句话说,a,b,c,d,é是好的 駅,南,口,第,自,転,車.,3,5,6不是,所有这些分隔符都应该是它自己的话。或者类似

这个问题的“棘手”部分是,我所说的alphabeth不仅仅是26个字符。它还应该包括任何类似字母贝斯的东西,包括重音字符和希伯来语的alibeth等

为什么我需要它们

我想把课文分成几个字

alphabeth与拉丁字母alphabeth、希伯来语的alibeth、阿拉伯字母abjads一样,是由空间分隔的

汉字之间没有任何分隔

所以我想我应该用任何不是字母的东西来分隔文本

换句话说,a,b,c,d,é是好的

駅,南,口,第,自,転,車.,3,5,6不是,所有这些分隔符都应该是它自己的话。或者类似的东西

简而言之,我想检测一个字符本身是否可以是一个单词,或者是否可以是单词的一部分

我试过什么

你可以看看我很久以前问的问题:

我在那里实现了唯一的答案,但后来我发现汉字没有拆分。为什么不平分秋色呢?嗯,这意味着阿尔法贝特家族也分裂了

如果所有这些Alphabeth“粘”在一起,我可以根据UTF将它们分开,那也很好

我现在就用答案 和“拉出”所有非字母字符


这不是一个完美的解决方案,但对我来说已经足够好了,因为西文字符和中文字符很少出现在同一个文本中。

也许你不应该用正则表达式来实现这一点,而应该用良好的旧字符串索引扫描

希伯来语、汉语、韩语等字母表都在unicode码点的连续范围内。因此,您可以通过读取字符的unicode值,然后检查它所属的unicode块来轻松检测字母表。

Jan Goyvaerts(PowerGrep的知名人士)曾经向我展示了一种非常有用的语法,可以做到这一点:

(?<![\p{M}\p{L}])word(?![\p{M}\p{L}])
(?
此表达式使用regex lookbehind和regex lookbeahead来确保单词的边界不存在字母或变音符号


为什么这个正则表达式比简单地使用“\b”要好?这个正则表达式的优点是合并了\p{M}来包含变音符号。当使用正常的单词边界标记(\b)时,正则表达式引擎会在许多变音符号的位置发现分词,即使变音符号实际上是单词的一部分(例如,希伯来语的变音符号就是这种情况。例如,以希伯来语单词גְּבוּלוֹת为例,在其上运行一个“\b”的正则表达式——您将看到它实际上是如何在每个变音点将单词分成不同的部分的)。上面的正则表达式通过使用Unicode字符类来解决此问题,以确保变音符号始终被视为单词的一部分,而不是在单词中打断。

要检查字符串是否只包含字母字符(即a-Z),正则表达式将为“^[a-zA-Z]*$”我要问:你试过什么?那很简单。我也想能匹配所有的希伯来角色和所有的阿拉伯角色。我试过什么?好的,等等:我试过的爸爸化的东西。我也在想同样的想法。口音呢?他们也粘在一起吗?有点懒,有没有人有字母表的范围已经存在:)目前ascw没有映射所有utf8字符,对吗?我需要等待3分钟才能接受答案。太棒了,非常感谢Phillipand,这部中文作品?哦,它在每个非字母表字符上都会中断?@Jim-没有来源;它来自我与Jan的私人对话。