【发布时间】:2010-01-26 14:08:29
【问题描述】:
目前我正在尝试匹配诸如
之类的模式text text date1 date2
所以我有正则表达式可以做到这一点。但是,问题是,例如,如果用户输入的数据有超过 1 个空格,或者如果他们将一些文本放在新行中等,则模式不会被拾取,因为它不完全正确匹配模式集。
有没有更可靠的模式匹配方法?我们的目标是让用户编写起来非常简单,但在我的终端上也很容易匹配。我正在考虑删除所有空格/换行符等,然后尝试匹配没有空格的模式,即texttextdate1date2。
谁有更好的解决方案?
更新
这是我需要匹配的模式的一个小例子:
FIND me@test.com 01/01/2010 to 10/01/2010
这是我当前的正则表达式:
FIND [A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4} [0-9]{1,2}/[0-9]{1,2}/[0-9]{2,4} to [0-9]{1,2}/[0-9]{1,2}/[0-9]{2,4}
这在 90% 的情况下都可以正常工作,但是,如果用户通过电子邮件提交此信息,它可能具有我不感兴趣的所有不同类型的格式和 HTML。我正在使用 HtmlAgilityPack 和 HTML 的组合标记删除正则表达式以从电子邮件中删除所有 HTML,但即便如此,我似乎在某些情况下也无法匹配。
我相信这可能是一个比模式匹配更与解析相关的问题,但我认为也许有更好的方法来做到这一点......
【问题讨论】:
-
用一个正则表达式匹配多个空格绝对没有问题。向我们展示该模式,您将获得新的作为回报。 :)
-
@Jonas,正则表达式确实与空格匹配得很好,我已经有一个可以解决问题的。我的问题是我遇到了有时信息位于不同行等的情况,或者用户可能错误地在文本之间输入了几个额外的不需要的空格。我希望能够处理这些情况。
-
@James,请发布您正在使用的正则表达式。
-
正确的正则表达式查询可以轻松处理这些情况
-
@James 如果你想匹配一个电子邮件地址,你的正则表达式应该支持标准 (tools.ietf.org/html/rfc2822#section-3.4.1) - 这里有一个例子:regular-expressions.info/email.html