【问题标题】:How configure Regex for words AND "e-mail"如何为单词和“电子邮件”配置正则表达式
【发布时间】:2015-10-06 20:15:05
【问题描述】:

我的用户有一个 TEXT 字段来通知一些数据。我利用正则表达式来分析该文本的每个单词,使用以下语法:

 Dim UserInput as string = textbox.text.trim
 Dim AllWords as String() = Regex.Split(UserInput, "\W+")

一切正常,但在“e-mail”之类的词中,返回的函数不会将其视为一个完整的词(由于 W+),但它会将那个词视为仅“mail”。

由于一些用户更喜欢指定一个实际的 MAIL(以打印模式将合同直接发送到他们的家庭地址),但其他用户更喜欢通过电子邮件发送的合同(通过 PDF),在这种特定情况下我们会感到很困惑!

如何设置正则表达式以理解诸如“电子邮件”之类的单词(我知道它输入错误,但有些用户这样写电子邮件!)用连字符作为一个完整的单词?

谢谢!

【问题讨论】:

  • 这个问题我不是很清楚,你能提供一个允许和不允许的单词列表让我们有一个直观的例子吗?
  • "\W+" 建议 Regex ALL WORDS ONLY(这是真的,我只需要单词,而不是标点符号、数字等),但是这个函数将“邮件”返回给单词“电子邮件”——这是主要问题!遵循此规则,任何带有连字符的单词都不会被相应地处理。

标签: .net regex vb.net


【解决方案1】:

您可以更改您的正则表达式以匹配其中带有连字符的单词。我是用 C# 编写的,但您可以轻松地将其转换为 VB.NET。

using System.Text.RegularExpressions;
string UserInput = "This is e-mail too";
string[] AllWords = Regex.Split(UserInput, @"[^-\w]+");
Console.WriteLine(AllWords.Length);
foreach (string x in AllWords)
{
    Console.WriteLine(x);
}

【讨论】:

  • 谢谢@Hakunamatata...正是我需要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-26
  • 1970-01-01
  • 2018-01-08
  • 1970-01-01
  • 2011-12-28
  • 2012-01-02
相关资源
最近更新 更多