|
|
|
| Здравствуйте!
Подскажите пожайлуста, как с помощью одного выражения найти заданный символ в строке, при этом не искать те символы, которые входят подстроку ограниченную какими-либо символами.
Например, найти в строке все запятые, кроме тех которые встречаются в скобках.
Исходная строка примера:
"бла бла, бла бла, (бла, бла) бла бла, бла".
Требуемый результат :
"бла бла , бла бла , (бла, бла) бла бла , бла".
Можно ли эту задачу решить одним выражением? Спасибо. | |
|
|
|
|
|
|
|
для: big-trot
(15.02.2012 в 14:51)
| | Нет. РВ может заглянуть вперед либо назад на предмет присутствия или отсутствия конкретного символа или подстроки, но только сразу за(перед) текущей позицией, а не просмотреть строку до конца или начала.
Если попытаться написать что-то вроде
"#(?<!\(.*?),#" //предполагалось, что это означает, что нигде перед запятой нет открывающейся скобки
| , то, даже при таком незначительном усложнении, получается ошибка Compilation failed: lookbehind assertion is not fixed length (шаблон просмотра назад не фиксированной длинны). А надо было бы проверить не только это, но еще чтоб не было скобки после, чтоб открывающиеся скобки, но уже закрытые игнорировались и т.п..... Короче мало того что не возможно, но еще и овчинка выделки не стоит. Гораздо проще одной строкой удалить все ( .... ), а второй сделать поиск в том, что осталось. | |
|
|
|