Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 不带点的正则表达式变量提取_Regex_String_Filter - Fatal编程技术网

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}"
我试图创建一个正则表达式,它可以提取所有没有点的变量

预期结果是:

  • aaa美元
  • 美元ddd

  • 我的正则表达式是
    \$[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