2014-08-27 15 views
1

Я очень плохо отношусь к RegEx. Может ли кто-нибудь помочь мне получить RegEx для этого шаблона.Regex для записей LAS

Здесь шаблон

(слова). (Одного символа, может быть пустым) (белые пробелы) (слова, может быть пустым) :(Слова, может быть пустым)

Вот примеры

VERS. 2.00: Ver 2.00 
WRAP. NO: 
STRT.F     4501.0000:START DEPTH 
WELL. C5 1H:WELL 
FTG GTG. :LOCATION FOOTAGE DESCRIPTION 

Update 1:

Вот что я сделал.

string re1 = "((?:[a-z][a-z]+))"; // Word 1 
string re2 = ".*?"; // Non-greedy match on filler 
string re3 = "(\\.)"; // Any Single Character 1 
string re4 = "(.)"; // Any Single Character 2 
string re5 = "(\\s+)"; // White Space 1 
string re6 = "((?:[a-z][a-z]+))"; // Word 2 
string re7 = ".*?"; // Non-greedy match on filler 
string re8 = "(:)"; // Any Single Character 3 
string re9 = ".*?"; // Non-greedy match on filler 
string re10 = "(?:[a-z][a-z]+)"; // Uninteresting: word 
string re11 = ".*?"; // Non-greedy match on filler 
string re12 = "((?:[a-z][a-z]+))"; // Word 3 

Regex r = new Regex(re1 + re2 + re3 + re4 + re5 + re6 + re7 + re8 + re9 + re10 + re11 + re12, RegexOptions.IgnoreCase | RegexOptions.Singleline); 

Update 2:

Хорошо. Я пробовал что-то новое. Вот мое регулярное выражение.

(\.)(.)(\s+)(4501.0000)(:) 

вот этот вход.

STRT DTG.F     4501.0000:START DEPTH 

И вот вывод.

STRT DTG 
. 
F 

4501.0000 
: 
START DEPTH 

Теперь мне нужно только заменить 4501.0000 с регулярным выражением для предложения (например, «какой-то текст» или «какой-то больше текста»),

+0

вероятно, вы должны перепроверить спецификации LAS первый, '(СЛОВА) .' не всегда верно, это может быть пробел после' (прописью) spacespacespace . –

+0

Мы внесли некоторые изменения в LAS. Так что это не формат LAS (можно сказать, вдохновленный), –

+0

@YuliamChandra Возможно ли, что в строке LAS есть две колонки «:» в строке LAS ?, –

ответ

2

Секция заголовка файла LAS (в целом) имеет такой формат.

<MNEM> .<UNIT> <DATA> : <DESCRIPTION> 

Регулярное выражение может быть таким.

^([\w\s]*)\s*\.([^ ]*)\s*([^:]*)\s*:(.*)$ 

Объяснение

^   -> beginning of line 
([\w\s]*) -> 1st group, MNEM (take words and/or space) 
\s*  -> space 
\.  -> period delimiter 
([^ ]*)  -> 2nd group, UNIT (take everything until it sees space) 
\s*  -> space 
([^:]*) -> 3rd group, DATA (take everything until it sees colon) 
\s*  -> space 
:   -> colon delimiter 
(.*)  -> 4th group, DESCRIPTION (take everything) 
$   -> end of line 

DEMO

+0

Спасибо, сайт регулярного выражения - пригород, –

+0

@FaisalHafeez, я редактирую шаблон, изменяю '\ w' на' [^] 'на основании предположения, что' UNIT' и 'DATA' разделены пробелом –

+0

спасибо, я также изменил выражение, но это возвращало 5 жетонов, ваше новое изменение отлично справляется с проблемой. –

0

использование \ s или «» включить пропуски, а также. Что-то вроде

 ((?:[a-z][a-z\s]+)) 

или

 ((?:[a-z][a-z ]+)) 
Смежные вопросы