[R] A question on regular expression

Jeff Newmiller jdnewm|| @end|ng |rom dcn@d@v|@@c@@u@
Fri Sep 13 15:57:59 CEST 2019


Regular expressions are in much more widespread use than merely R... and there are correspondingly more resources for learning than just R-help. Please do make use of them. Here are a couple that googling "regex character set carat" found:

https://www.regular-expressions.info/charclass.html
https://stackoverflow.com/questions/23352038/regex-excluding-specific-characters

On September 13, 2019 3:59:07 AM PDT, Christofer Bogaso <bogaso.christofer using gmail.com> wrote:
>A quick question.
>
>Could you please explain the -- [^}]* -- part in finding the pattern?
>
>On Fri, Sep 13, 2019 at 12:19 AM Bert Gunter <bgunter.4567 using gmail.com>
>wrote:
>>
>>
>> You can't use the same regex for str_extract_all as I used for sub
>(or gsub, which is what is required here)! If you do this sort of thing
>a lot, you *must* learn more about regex's.
>>
>> Anyway, this will do what you want I think:
>>
>> z <- paste("ab{cd$ }ed", "ab{cad$ }ed", collapse = " ")  ## just for
>readability
>>
>> > str_extract_all(z,"\\{[^}]*\\}")
>> [[1]]
>> [1] "{cd$ }"  "{cad$ }"
>>
>> Cheers,
>> Bert
>>
>> On Thu, Sep 12, 2019 at 10:12 AM Christofer Bogaso
><bogaso.christofer using gmail.com> wrote:
>>>
>>> Thanks Bert,
>>>
>>> This works, but if in my text there are more than one patterns then
>>> fails to generate desired result.
>>>
>>> library(stringr)
>>> str_extract_all(paste("ab{cd$ }ed", "ab{cad$ }ed", collapse = " "),
>>> ".*(\\{.*\\}).*")
>>>
>>> This generates below -
>>>
>>> [[1]]
>>>
>>> [1] "ab{cd$ }ed ab{cad$ }ed"
>>>
>>> I was expecting I would get a vector of length 2 with desired
>pattern.
>>>
>>> Where did I make any mistake?
>>>
>>> Thanks,
>>>
>>> On Thu, Sep 12, 2019 at 10:29 PM Bert Gunter
><bgunter.4567 using gmail.com> wrote:
>>> >
>>> > > sub(".*(\\{.*\\}).*", "\\1","ab{cd$ }ed")
>>> > [1] "{cd$ }"
>>> >
>>> > Use ".+" instead of ".*" within the {} if you don't want to return
>empty {}'s.
>>> >
>>> > You might wish to use the stringr package for string matching and
>manipulation, as it provides a more user friendly and consistent
>interface to these tasks.
>>> >
>>> >
>>> > Bert Gunter
>>> >
>>> > "The trouble with having an open mind is that people keep coming
>along and sticking things into it."
>>> > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip )
>>> >
>>> >
>>> > On Thu, Sep 12, 2019 at 9:31 AM Christofer Bogaso
><bogaso.christofer using gmail.com> wrote:
>>> >>
>>> >> Hi,
>>> >>
>>> >> I am wondering on what is the correct way to select a pattern
>which goes as -
>>> >>
>>> >> {"(any character with any length)"}
>>> >>
>>> >> The expressions " {" " and " "} " both are included in the
>pattern.
>>> >>
>>> >> For example, the lookup of the above pattern in the text "
>>> >> {"asaf455%"}57573blabla " will result in {"asaf455%"}
>>> >>
>>> >> Any help will be highly appreciated.
>>> >>
>>> >> Thanks,
>>> >>
>>> >> ______________________________________________
>>> >> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>>> >> https://stat.ethz.ch/mailman/listinfo/r-help
>>> >> PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>>> >> and provide commented, minimal, self-contained, reproducible
>code.
>
>______________________________________________
>R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.

-- 
Sent from my phone. Please excuse my brevity.



More information about the R-help mailing list