Я новичок в использовании регулярных выражений, надеюсь, кто-то может мне помочь. Я использую регулярное выражение ниже Grep файл CSV для строки, которая точно имеет один символ трубы (т.е. |)Regex найти строку, которая точно имеет один символ трубы
grep "^([^\\|]+\\|){1}[^\\|]+$" myfile.csv
К сожалению, вышеприведенные дает никакого результата при использовании с Grep. Есть идеи?
Образец содержимого файла csv приведен ниже, где я ожидаю найти вторую строку.
"foo"|"foo"|"foo"
"bar"|"bar"
решения на этот вопрос:
grep -E "^([^|]+\|){1}[^|]+$" myfile.csv
и
egrep "^[^|]+\|[^|]+$" myfile.csv
Это именно то, что регулярные выражения действительно не должны использоваться: они не подходят для подсчета. У вашего языка/рамки выбора очень может быть метод или функция 'str.count()'; он, безусловно, имеет 'str.find()', что было бы гораздо более уместным. –
@JoshCaswell Я согласен с тем, что это может быть проще, если вы используете язык, который имеет что-то вроде этого, но он также отлично подходит для регулярных выражений (и, конечно, есть приложения для регулярного выражения, где нет доступных языков хоста, как вы предлагаете). Как показывает OP, она использует 'grep'. – Phrogz
Вы можете указать флаг '-E' в' grep', чтобы получить полную расширенную поддержку регулярных выражений. – Phrogz