1

I'm new to regex and to programming basically too. The language I'm using is C# So I'm making this data mining program from a text file containing music. Basically I have a string like this:

gr1 gr1 gr1 gr1 d2K gr1 d2L d2L m2L gr1 gr1 gr1 gr1 gr1 m2K m2L d3L d3K m2K gr1 gr1 gr1 gr1 d2K d2L gr1 gr1 gr4L gr1 gr1 gr1 gr1 gr1 gr1 d2K gr1 d2L d2K gr1 d2L gr1 gr5K gr1 gr1 gr1 gr1 d2K gr1 d2L d2L m2L gr1 gr1 gr1 gr1 gr1 m2K m2L d3L d3K m2K gr1 gr1 gr1 gr1 d2K d2L gr1 gr1 gr4L gr1 gr1 gr1 gr1 gr1 gr1 d2K gr1 d2L d2K gr1 d2L gr1 gr1 gr1 gr1 gr1 gr1 m3L m3K gr1 gr1 d2K d2L d3K gr1 gr5L gr1 gr1

And I'm trying to find "gr1 gr1" but it always misses it and works only partly. I'm using this code :

String temp2 = "gr1 gr1";

String temp = "\\b" + temp2 + "\\b";

int vv = Regex.Matches(mystring, temp).Count;

But vv is always = 0. What am I doing wrong?

Ok changed code to :

String temp1 = "\\b.*\\b";             
String temp2 = suskaldyta_pask_str[i].Replace(" ", temp1);               
String temp = "(?=\\b" + temp2 + "\\b)";

Seems atleast giving me some resolt. Not much idea if it works right, but will need some testing and reading. :)

Ok i think problem is with temp1 as .* most probably means it ignores text that is between br1 bla bla bla br1 and counts it as br1 br1.

Thank you guys, but nothing helped. Needed to it fastly so made it with 3 for cicles. Might be little brute but works perfectly :) Topic might be considered closed.

Exmorn
  • 71
  • 1
  • 9

2 Answers2

0

The \b is functioning as an escape sequence in the string. You can either do:

String temp = @"\b" + temp2 + @"\b";
// or
String temp = "\\b" + temp2 + "\\b";

This will only match two gr1 in a row separated by a space.

Explosion Pills
  • 188,624
  • 52
  • 326
  • 405
  • Havnt tried frist one, but second one doesn't seem to be working for me have been using that. It found some combinations, but when it comes to one and mostly used "gr1 gr1" that single gr1 apear 62 times. it seems to find 0 "gr1 gr1" combinations :/ – Exmorn Apr 26 '14 at 16:26
0

Why do you prefer regex to .IndexOf?

string text = "gr1 gr1 gr1 gr1 d2K gr1 d2L d2L m2L gr1 gr1 gr1 gr1 gr1 m2K m2L d3L d3K m2K gr1 gr1 gr1 gr1 d2K d2L gr1 gr1 gr4L gr1 gr1 gr1 gr1 gr1 gr1 d2K gr1 d2L d2K gr1 d2L gr1 gr5K gr1 gr1 gr1 gr1 d2K gr1 d2L d2L m2L gr1 gr1 gr1 gr1 gr1 m2K m2L d3L d3K m2K gr1 gr1 gr1 gr1 d2K d2L gr1 gr1 gr4L gr1 gr1 gr1 gr1 gr1 gr1 d2K gr1 d2L d2K gr1 d2L gr1 gr1 gr1 gr1 gr1 gr1 m3L m3K gr1 gr1 d2K d2L d3K gr1 gr5L gr1 gr1";
string pattern = "gr1 gr1";
int count = 0;
int index = -1;
while ((index = text.IndexOf(pattern, index + 1)) != -1)
    count++;
Console.WriteLine(count);
Ulugbek Umirov
  • 12,719
  • 3
  • 23
  • 31