Regex 不带点的正则表达式变量提取
我有一个字符串:Regex 不带点的正则表达式变量提取,regex,string,filter,Regex,String,Filter,我有一个字符串: "{balba $aaa = $bbb.test == $ddd == $sdfsf.dfgdfg.dfg}" 我试图创建一个正则表达式,它可以提取所有没有点的变量 预期结果是: aaa美元 美元ddd 我的正则表达式是\$[a-zA-Z0-9\]*[^\.],但它不起作用。您没有给出语言,因此这里有一个解决方案,它使用了一个负前瞻和一个所有格量词(注意:某些风格不支持) 看到了吗 \w++至少匹配一个单词字符,不要回溯 (?!\)一个消极的前瞻,确保没有跟随你没有给出的语言
"{balba $aaa = $bbb.test == $ddd == $sdfsf.dfgdfg.dfg}"
我试图创建一个正则表达式,它可以提取所有没有点的变量
预期结果是:
我的正则表达式是
\$[a-zA-Z0-9\]*[^\.]
,但它不起作用。您没有给出语言,因此这里有一个解决方案,它使用了一个负前瞻和一个所有格量词(注意:某些风格不支持)
看到了吗
\w++
至少匹配一个单词字符,不要回溯
(?!\)
一个消极的前瞻,确保没有
跟随你没有给出的语言,因此这里有一个使用消极前瞻和所有格量词的解决方案(注意:某些口味不支持)
看到了吗
\w++
至少匹配一个单词字符,不要回溯
(?!\)
一种负向前瞻,可确保没有
跟踪以下是如何在Python中使用正向和负向((?=…)
和(?!…)
)执行此操作:
…其中,您声明标识符仅包含允许的字符,后跟无点,然后是非标识符字符
这可以简化为:
>>> for index, found in enumerate(re.findall('\$\w+(?!\.)(?=\W)', s)):
... print '%d. %s' % (index + 1, found)
...
1. $aaa
2. $ddd
下面是如何在Python中使用正数和负数(
(?=…)
和(?!…)
)来实现这一点:
…其中,您声明标识符仅包含允许的字符,后跟无点,然后是非标识符字符
这可以简化为:
>>> for index, found in enumerate(re.findall('\$\w+(?!\.)(?=\W)', s)):
... print '%d. %s' % (index + 1, found)
...
1. $aaa
2. $ddd
哪种编程语言?+1约翰西韦伯。Regex确实因环境而异,因此,针对其他环境的正确Regex答案可能不适合您。请指定您的环境。使用哪种编程语言?+1 Johnsyweb。Regex确实因环境而异,因此,针对其他环境的正确Regex答案可能不适合您。请指定您的环境。但是,这仅查找后跟空格的变量名。如果还有什么呢?我只是猜测,因为我们没有足够的信息来说明,但是如果
($aaa$bbb)
或{balba$aaa==$ddd}
也是合法的字符串,可能使用单词边界(例如,\$\w+\b(?!\)
)可能是可取的。但是,这只会找到后跟空格的变量名。如果还有其他的东西呢?我只是猜测,因为我们没有足够的信息可以说,但是如果($aaa$bbb)
或{balba$aaa==$ddd}
也是合法的字符串,也许使用单词边界(例如,\$\w+\b(?!\)
)可能是可取的。过路人注意:如果你的正则表达式引擎不支持,路人注意:如果你的正则表达式引擎不支持,你可以用它来代替。
>>> for index, found in enumerate(re.findall('\$\w+(?!\.)(?=\W)', s)):
... print '%d. %s' % (index + 1, found)
...
1. $aaa
2. $ddd