манипулирование строками в регулярных выражениях - PullRequest
0 голосов
/ 05 апреля 2011

У меня проблема с манипулированием строками

вот код

string str = "LDAP://company.com/OU=MyOU1 Control,DC=MyCompany,DC=com";
Regex regex = new Regex("OU=\\w+");
var result = regex.Matches(str);
var strList = new List<string>();
foreach (var item in result)
{
    strList.Add(item.ToString().Remove(0,3));
 }
 Console.WriteLine(string.Join("/",strList));

результат, который я получаю, - "MyOU1" вместо того, чтобы получить "MyOU1 Control"

пожалуйста, помогите спасибо

Ответы [ 2 ]

4 голосов
/ 05 апреля 2011

Либо добавьте пробел в список разрешенных (\ w не разрешает пробел), либо используйте знание, что запятую можно использовать в качестве разделителя.

Regex regex = new Regex("OU=(\\w|\\s)+");

ИЛИ

Regex regex = new Regex("OU=[^,]+");
4 голосов
/ 05 апреля 2011

Если вы хотите, чтобы символ пробела также совпадал, вам нужно включить его в свое регулярное выражение. \w соответствует только символам слова, без пробелов.

Regex regex = new Regex(@"OU=[\w\s]+");

Соответствует символам слова (\w) и пробельным символам (\s).

(@ перед строкой просто для удобства: если вы используете его, вам не нужно избегать обратной косой черты.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...