我正在尝试查找一个正则表达式,该正则表达式将匹配以下格式的特定表达式:
name = value但是,我需要它不匹配:
name.extra = value我有以下正则表达式:
([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)它匹配第一个表达式,但也匹配第二个表达式(extra = value)。
我需要一个正则表达式,它只匹配第一个表达式,而不匹配第二个表达式(即带一个点)。
发布于 2012-12-28 12:10:09
负向回溯断言(?<!)可能就是您正在寻找的。
对于简单的赋值:(?<!\.)\b(\w+)\s*=\s*(\w+)
摘要:
(?<!\.) =防止该单词开头的字符location\b = . of a word捕获的单词是:
使用您指定的正则表达式,这应该会得到类似如下的结果:
(?<!\.)\b([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)
发布于 2012-12-28 12:00:39
只需在表达式中添加^开头和$结尾即可
^([\w\@\-]+) *(\=|\>|\>\=|\<|\<\=) *([^\s\']+)$发布于 2012-12-28 13:39:42
您没有说明您正在使用什么语言,但听起来您根本不需要使用正则表达式。
如果您正在使用PHP,那么在=上使用explode函数来拆分。然后检查参数名中是否有句点。
https://stackoverflow.com/questions/14064370
复制相似问题