0

我正在尝试找到一个匹配以下格式的特定表达式的正则表达式:

name = value

但是,我需要它不匹配:

name.extra = value

我有以下正则表达式:

([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)

它匹配第一个表达式,但也匹配第二个表达式 ( extra = value)。

我需要一个只匹配第一个表达式而不匹配第二个表达式的正则表达式(即带点)。

4

3 回答 3

1

只需在表达式中添加^开头和$结尾

^([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)$
于 2012-12-28T04:00:39.480 回答
0

否定的后向断言 ( ?<!) 可能是您正在寻找的。

对于一个简单的任务:(?<!\.)\b(\w+)\s*=\s*(\w+)

概括:

  • (?<!\.)= 阻止该.位置的角色
  • \b= 单词的开头

捕获的单词是:

  • \1 = 目的地名称
  • \2 = 源名称

并使用您指定的正则表达式,这应该会给出以下内容:

(?<!\.)\b([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)

于 2012-12-28T04:10:09.040 回答
0

你没有说你使用的是什么语言,但听起来你根本不需要使用正则表达式。

如果您使用的是 PHP,则使用该explode函数在=. 然后检查参数名称中是否有句点。

于 2012-12-28T05:39:42.467 回答