C#中的英语正则表达式

时间:2017-06-03 23:27:27

标签: c# regex

我需要一个正则表达式模式,可以检测给定的文本是否是英文,但我想包含以下内容:

  • 允许空格
  • 允许数字和单词
  • 允许多行和标签
  • 允许所有特殊字符!@#$%^& *()_- + = {} | /<> ~`':“; []
  • 允许网址,电子邮件
  • 如果给定的文本包含任何字符而不是英文,则应将其视为非英文文本,如果文本包含阿拉伯字母/单词,例如“ابت...... etc.”,则应该应用此文本。和法语“é,â...等”相同以及所有其他语言

简而言之,我需要知道给定的文本,任何格式的文本是否都是英文的。我尝试了很多模式,但我没有得到它,实际上,我不需要使用任何语言检测器,因为应用程序将脱机使用。

不应接受的文本样本:

  

您好! ......é

     

مرحبابك

     

للتحميلاضغطهنا... http://www.google.com

因此,如果文本包含非英文字母,则应将其视为非英文文本。

3 个答案:

答案 0 :(得分:1)

我想我找到了它,我尝试了Basic Latin Unicode类,到目前为止它工作得很好。我用过:

"^[\u0000-\u007F]+$"

它的想法是检查给定的文本是否是英文并且仅使用英文字母书写,此外,它允许特殊字符。因此,如果给定的文本是这样的“我在咖啡馆遇到了我的朋友”,它被认为是非英文文本,因为给定的文本应该只包含英文字母,并且即使键入名称,地点也要避免任何其他字母。 ..这正是我所需要的。
谢谢大家。

资源:

答案 1 :(得分:0)

这应该有效:

@"[^\t\w\d\s$-/:-?{-~!"^_`\[\]]+"

如果匹配,则有非英文字母/字符。

顺便说一句,你只是测试文本是否只包含英语人通常会使用的那些字符,而不是它所使用的语言。 要检测一种语言,你需要像自然语言处理这样的东西,而不是正则表达式。

答案 2 :(得分:0)

理论上,如果正则表达式包含英语词典中的每个单词,都是可能的。

您可以创建一个检测非英文字符的正则表达式。这将检测绝对不是英语的文本,但无法确认它是肯定的。