2012-03-14 3 views
0
new line integer | string | integer || 

Обратите внимание на двойную вертикальную планку в конце, в одной вертикальной планке используется разделитель.Регулярное выражение для поиска этого рисунка:

Например, смелой ниже будет найдено:

11 | Любая строка и цифры | 939 | любая строка | ничего, включая delimter |

138151 | Любая строка и цифры | 90139 || ничего, включая разбор |

13811 | Любая строка и цифры9 | 885 | Морестеринг | все, включая разбор |

Я ищу строку, где поле между 3-м и 4-м разрядом пусто.

+0

Параметр '|' символ называется "труба" – Bohemian

+0

@Bohemian это? Я думал, что это было действительное действие, выполняемое в unix, а не с именем символа? – NimChimpsky

+0

Это то, что люди называют - «символ трубы». Wiki говорит [Vertical Bar] (http://en.wikipedia.org/wiki/Vertical_bar), причем «pipe» является для него общепринятым названием, потому что (как вы говорите) это означает в unix – Bohemian

ответ

1

Я думаю, что вы хотите:

^\d+\|[^|]+\|\d+\|\| 

Ломая это вниз:

  • ^ означает "начало строки"
  • \d+ означает "по меньшей мере, одну цифру"
  • \| средства «буквальный символ вертикальной черты» (нужно избегать этого, потому что сам по себе это означает «логический» или «)
  • [^|]+ означает «по крайней мере один не вертикальный штрих-символ». Обратите внимание, что вам не нужно необходимо избегать символов в классе символов [...] (за исключением, конечно, закрывающей скобки ]).
+0

thnx! (min chars) – NimChimpsky

1

В зависимости от языка/регулярное выражение вкуса можно использовать такое выражение:

(?mx)^\d+ \| [^|]+ \| \d+ \|\| .* 
+0

thnx! (min chars) – NimChimpsky

1
^[0-9]+\|[ a-zA-Z0-9_]+\|[0-9]+\|.*\|$ 

Вам нужно настроить, что «текст» для вас и сделать группы для извлечения. Вы можете проверить его здесь: http://www.regextester.com/

1

Для одной линии:

\d+\|[^|]+\|\d+\|\|.* 

Для нескольких линий:

^\d+\|[^|]+\|\d+\|\|.*$ 
Смежные вопросы