2014-01-10 5 views
2

Im используя C++ 11 заголовка регулярного выражения и у меня есть проблема: Я хочу иметь регулярное выражение что-то вродеКак сделать регулярное выражение. есть все?

"(\ D {1,10}) \ s (. *)"

Моя проблема в том, что строка содержит символы, которые. не соответствует. Любой способ сделать. все. Если вам интересно, что оно не матч: http://www.cplusplus.com/reference/regex/ECMAScript/

любой символ, кроме терминаторов линии (LF, CR, LS, PS).

Худшая часть заключается в том, что я думаю, что я мог бы жить с чередованием (хотя и уродливым), но IDK, как указать LS и PS в регулярном выражении.

+0

Вместо использования '.' использует ли' [\ s \ S] 'работу? –

+0

создание окончание regex как это:) \\ s ([\\ s \\ S] *) не работает – NoSenseEtAl

+0

Почему вас интересует соответствие терминаторов строк? Разве не было бы легче снять их с строки перед тем, как они совпали? –

ответ

1

Если предположить, что строка не содержит NUL символы:

[^\0]* 

Не забывайте, что \ должен быть удвоен в строках.

"...[^\\0]*..." 
+0

doh .... хороший старый не трюк :) – NoSenseEtAl

+1

необработанные строки - приятное дополнение для регулярного выражения R "([^ \ 0] *)" – galop1n

+0

пробовал, работает :) tnx ... – NoSenseEtAl

Смежные вопросы