There's an obvious predicate implied by a Regex: does it match a string?
What's the obvious predicate for a string? Checking whether it is contained
in another string is one option but that's pretty arbitrary. You could just
as well check for containment the other way. Or prefix, or suffix, etc.

On Thu, Dec 3, 2015 at 4:01 PM, Seth <[email protected]> wrote:

> That's really elegant. Is there a reason filter() is defined for regex
> strings but not ASCIIStrings?
>
> On Thursday, December 3, 2015 at 12:55:50 PM UTC-8, Stefan Karpinski wrote:
>>
>> You can just pass a Regex object to filter:
>>
>> filter(r"a.*b.*c"i, map(chomp,open(readlines,"/usr/share/dict/words")))
>>
>> This gives all dictionary words containing "a", "b" and "c" in order but
>> not contiguous.
>>
>> On Thu, Dec 3, 2015 at 3:29 PM, David P. Sanders <[email protected]>
>> wrote:
>>
>>>
>>>
>>> El jueves, 3 de diciembre de 2015, 13:54:01 (UTC-6), Erik Schnetter
>>> escribió:
>>>>
>>>> You are looking for `filter`:
>>>>
>>>> filter(line->match(r"parameter", line), rLines)
>>>>
>>>
>>> Apparently this needs to be
>>>
>>> filter(line->ismatch(r"3", line) != nothing, rLines)
>>>
>>> (replace "match" with "ismatch" to get a Boolean expression instead of a
>>> RegexMatch object).
>>>
>>>
>>>>
>>>> -erik
>>>>
>>>> On Thu, Dec 3, 2015 at 2:52 PM, Jason McConochie <[email protected]
>>>> > wrote:
>>>>
>>>>> Is there grep for an Array of AbstractStrings?  See code below
>>>>>
>>>>>
>>>>> # A. Read a file into memory (nLines pre-determined)
>>>>>
>>>>> fID=open(fName)
>>>>>
>>>>> iLine=0;
>>>>>
>>>>> rLines=Array(ASCIIString,nLines);
>>>>>
>>>>> while !eof(fID)
>>>>>
>>>>>   iLine+=1
>>>>>
>>>>>   rLines[iLine]=readline(fID)
>>>>>
>>>>> end
>>>>>
>>>>>
>>>>> # B. Find all strings in rLines with "parameter"
>>>>>
>>>>> ???? Is something like this possible?
>>>>>
>>>>> indices=grep(rLines,r"parameter")
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Erik Schnetter <[email protected]>
>>>> http://www.perimeterinstitute.ca/personal/eschnetter/
>>>>
>>>
>>

Reply via email to