This worked for me:

>>>
re.compile(r"""(?:'dbhost')\s*(?:=>)\s*['"](.*)['"],""").match(r"""'dbhost'
=> 'laskdjflkjsdlfkj',""").groups()[0]
'laskdjflkjsdlfkj'

It would also match a string with unbalanced quotes like 'foo" but it's a
much longer regex to enforce avoid that (at least in my experience, others
may have better regex knowledge).



On Thu, May 8, 2014 at 2:56 PM, David Reagan <[email protected]> wrote:

> I've been trying to use replace to replace config lines in a config file
> that I have good reasons not to template.
>
> Specifically, it's php associative array. Thus, I need to be able to match
> lines that contain quotes.
>
> So far, I can't get it to work.
>
> I eventually pulled the essentials out of my role and into a single
> playbook that I've posted on pastebin http://pastebin.com/Y6X5dZqz
>
> So, if a file contains
>
> $CONFIG = array (
>>   'dbhost' => 'laskdjflkjsdlfkj',
>> );
>>
>
> How do I replace 'dbhost' => 'whatever the setting happens to be.', with
> whatever I want? Also, the single quotes can sometimes be double quotes.
>
> I generally get an error that looks something like:
>
> fatal: [192.168.88.2] => failed to parse:
>> SUDO-SUCCESS-wlskunaawgbgwiokatisjtavicfvfbux
>> Traceback (most recent call last):
>>   File
>> "/home/vagrant/.ansible/tmp/ansible-tmp-1399578173.9-133172102011107/replace",
>> line 1330, in <module>
>>     main()
>>   File
>> "/home/vagrant/.ansible/tmp/ansible-tmp-1399578173.9-133172102011107/replace",
>> line 123, in main
>>     supports_check_mode=True
>>   File
>> "/home/vagrant/.ansible/tmp/ansible-tmp-1399578173.9-133172102011107/replace",
>> line 350, in __init__
>>     (self.params, self.args) = self._load_params()
>>   File
>> "/home/vagrant/.ansible/tmp/ansible-tmp-1399578173.9-133172102011107/replace",
>> line 901, in _load_params
>>     items   = shlex.split(args)
>>   File "/usr/lib/python2.7/shlex.py", line 279, in split
>>     return list(lex)
>>   File "/usr/lib/python2.7/shlex.py", line 269, in next
>>     token = self.get_token()
>>   File "/usr/lib/python2.7/shlex.py", line 96, in get_token
>>     raw = self.read_token()
>>   File "/usr/lib/python2.7/shlex.py", line 172, in read_token
>>     raise ValueError, "No closing quotation"
>> ValueError: No closing quotation
>>
>
> My local machine is running Ubuntu 14.04, and Ansible devel branch from a
> couple days ago.
>
> My testing vagrant vm is Ubuntu 12.04.
>
> Thanks!
>
> --
> You received this message because you are subscribed to the Google Groups
> "Ansible Project" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/ansible-project/7c2f93f5-b7f7-45e2-8af5-2b2d271f5e62%40googlegroups.com<https://groups.google.com/d/msgid/ansible-project/7c2f93f5-b7f7-45e2-8af5-2b2d271f5e62%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/CAMFyvFhXGS8EYQJzQdxpBHdZghwOecg%3DDdMzPvMSMLQf5v9%3Dkg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to