Regexp's comparison

Hi guys,

I have string i.e:
a
b
c
c
c
a
c
d

For example I would like to match all c lines with regexp. How can I
create the regexp if c lines can be ordered differently i.e:
a
c
b
c
c
a
d

I will be appreciated for any help

Thanks

Marcin T. wrote:

d

For example I would like to match all c lines with regexp. How can I
create the regexp if c lines can be ordered differently i.e:
a
c
b
c
c
a
d

Not entirely sure I understand the question. What are you expecting the
output to be in each case?

On 7/27/07, Marcin T. [email protected] wrote:

d

I will be appreciated for any help

Thanks

Posted via http://www.ruby-forum.com/.

Marcin I have no idea what you want achieve? Do you have lines of
strings or one string you have written into different lines?
What is the output/result you want from the input?

My first wild guess is that you should look at Enumerable#grep.

R.

On 7/27/07, Marcin T. [email protected] wrote:

c
d
Do you want to find out how many lines have c? Or find out witch line
numbers c is on? Or do you have one string “acbccad” or “ascffbdrc” and
you
are trying to find out if c is in that line? If that is what you are
trying
to do then try this:

“acbccad”.scan(/c/)

can you tell us more about what you are looking for? Sorry if this
hasn’t
helped.

Guys,
I’m going to search for iptables entries for some IP’s. The worst thing
is that rules in iptables can be each time in different order. I need to
check whether all desired rules for particular IP are in iptables.
Moreover I need to find out if there are no more entries than expected.

Assume that a, b, c, d etc… represent one line in iptable (one entry -
a for IP = x.x.x.x, b for y.y.y.y etc). I need to check whether 3 (not
only one and no more than 3) rules for ip x.x.x.x are in iptables but
these rules (lines) each time may be in different positions (other rules
may be placed between them etc…)

On 7/27/07, Marcin T. [email protected] wrote:

Assume that a, b, c, d etc… represent one line in iptable (one entry -
a for IP = x.x.x.x, b for y.y.y.y etc). I need to check whether 3 (not
only one and no more than 3) rules for ip x.x.x.x are in iptables but
these rules (lines) each time may be in different positions (other rules
may be placed between them etc…)

You can do the scan with lenght, like this:

text = “adcdcbcdc”
text.scan(/c/).length

this will return the total times c shows up in your string.

2007/7/27, Marcin T. [email protected]:

may be placed between them etc…)
I would not do any sorting here. Rather I’d fill a Hash with IPs as
keys and arrays of rules as values. That way you do not have to
bother with ordering and also it’s faster (probably not an issue in
your case). If you just want to count rules then you only need a
counter as value.

Kind regards

robert

Sam M. wrote:

On 7/27/07, Marcin T. [email protected] wrote:

Assume that a, b, c, d etc… represent one line in iptable (one entry -
a for IP = x.x.x.x, b for y.y.y.y etc). I need to check whether 3 (not
only one and no more than 3) rules for ip x.x.x.x are in iptables but
these rules (lines) each time may be in different positions (other rules
may be placed between them etc…)

You can do the scan with lenght, like this:

text = “adcdcbcdc”
text.scan(/c/).length

this will return the total times c shows up in your string.

Yeah,
I’ve found it. Thanks for help. I think this would solve all issues in
my code.