Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中的英语正则表达式#_C#_Regex - Fatal编程技术网

C# C语言中的英语正则表达式#

C# C语言中的英语正则表达式#,c#,regex,C#,Regex,我需要一个正则表达式模式,它可以检测给定文本是否为英语,但我希望包括以下内容: 允许空间 允许数字和文字 允许多行和多个选项卡 允许所有特殊字符!@$%^&*():“;[] 允许URL、电子邮件 如果给定文本包含任何字符而非英语,则应将其视为非英语文本,如果文本包含阿拉伯文字母/单词,如“ابت…”,则应使用此选项。。。等等,“法语”也是如此,比如。。。以及所有其他语言 简言之,我需要知道给定的文本(任何格式的文本)是否为英语。我尝试了很多模式,但没有得到它,实际上,我不需要使用任何语言检测

我需要一个正则表达式模式,它可以检测给定文本是否为英语,但我希望包括以下内容:

  • 允许空间
  • 允许数字和文字
  • 允许多行和多个选项卡
  • 允许所有特殊字符!@$%^&*():“;[]
  • 允许URL、电子邮件
  • 如果给定文本包含任何字符而非英语,则应将其视为非英语文本,如果文本包含阿拉伯文字母/单词,如“ابت…”,则应使用此选项。。。等等,“法语”也是如此,比如。。。以及所有其他语言
简言之,我需要知道给定的文本(任何格式的文本)是否为英语。我尝试了很多模式,但没有得到它,实际上,我不需要使用任何语言检测器,因为应用程序将脱机使用

不应接受的文本样本:

你好

م

للتملاغغطهنا

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

这应适用于:

@"[^\t\w\d\s$-/:-?{-~!"^_`\[\]]+"
如果存在匹配项,则存在非英语字母/字符

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

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


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

我想我找到了,我尝试了基本的拉丁Unicode分类,到目前为止效果很好。我使用了:

"^[\u0000-\u007F]+$"
它的想法是检查给定的文本是否是英文的,并且只使用英文字母书写,此外,它还允许使用特殊字符“,它被视为非英文文本,因为给定的文本应仅包含英文字母,并且即使键入名称、地点,也应避免任何其他字母。”。。。等等。这正是我需要的。
谢谢大家


资源:


顺便说一句,我尝试使用以下模式“\p{IsArabic}”,“^[a-zA-Z0-9&.\:/-]+$”,“^[\x20-\x7E]+$”,“[a-zA-Z0-9.-=+(){}@.-=+(){}%^&*.[]\]”。。。但是所有这些都给了我不正确的结果。café是一个英语单词,而且许多语言的文本中的字符也在英语中使用……总之,看看Unicode类别。您可以检查不是a-z的字母字符。您对regex的要求太高了,这在某种程度上简化了对语言的检测。这不是正则表达式的用途。真正地为什么不加载一个并比较文本中有多少单词是匹配的呢;你需要X,你认为“我知道!一个能检测给定文本是否为英语的正则表达式模式会让我得到X!”但是你尝试了,但没有得到X。在你告诉我们你的目的地之前,我们不能给你指路,“正则表达式模式”是一个方向而不是目的地。“我的一个朋友,Jürgen,是从德国来的。”-请告诉我这句话是否是英文的?我相信
\s
已经匹配了tab(和空格/换行符),而且
\w
已经匹配了数字,所以您不需要
\t
\d
@swaver2112 yearight@ed9w2in6它不太管用我想这个“[\u0000-\u007F]+$”可能会管用,因为它检查所有的基本拉丁字符和特殊字符,如果有其他字符,它被认为是不匹配的。。。我说的对吗?真的很有帮助。非常感谢。