需要正则表达式帮助

时间:2009-11-23 23:33:00

标签: regex

我需要匹配任何至少有一个字符串的字符串。 (点)和*(星)字符而不是<或者> (html标签)。有任何想法吗?感谢。

4 个答案:

答案 0 :(得分:4)

我认为以下内容可行,但我不认为正则表达式是解决此问题的最简单方法。

^[^<>]*(\.[^<>]*\*|\*[^<>]*\.)[^<>]*$

答案 1 :(得分:2)

^([^<>.]*\.[^<>*]\*)|([^<>*]*\*[^<>.]\.)[^<>]*$

这类似于Mark Byers提供的答案,但应该更有效率,因为它可以减少回溯。

说明:初始^字符指定模式适用于整个字符串。然后,字符串可以包含两种模式之一:

  • 一段时间后零或更多 不是<>的字符, 和星号,或
  • 星号后跟零或 更多不是<的字符 或>,以及一段时间。

在满足其中任何一项后,该字符串可以包含任何不是<>的数字(零个或多个)。

答案 2 :(得分:0)

^[^<>]*(\.[^<>]*\*|\*[^<>]*\.)[^<>]*$ 

要进行进一步的实验,请使用rubular,一个实时正则表达式检查器。

答案 3 :(得分:0)

^ [^<>]* ( \. [^<>]* \* | \* [^<>]* \.) [^<>]* $(没有空格),但两个正则表达式会更容易。

在Perl中:/^[^<>]*\.[^<>]*$/ and /^[^<>]*\*[^<>]*$/