Регулярное выражение для записей LAS

1

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

Вот шаблон

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

Вот примеры

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

Обновление 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);

Обновление 2:

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

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

Вот вход.

STRT DTG.F                  4501.0000:START DEPTH

И вот вывод.

STRT DTG
.
F

4501.0000
:
START DEPTH

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

  • 0
    возможно, вам нужно сначала проверить спецификацию LAS (WORDS). не обязательно верно, это может быть пробел после (WORDS)spacespacespace.
  • 0
    Мы сделали некоторые изменения в LAS. Так что это не формат LAS (можно сказать, вдохновленный),
Показать ещё 6 комментариев
Теги:

2 ответа

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 разделены пробелом
Показать ещё 1 комментарий
0

используйте \s или "", чтобы включить пробелы. Что-то вроде

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

или

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню