Исправление моего регулярного выражения [^ -] * [^ -] - PullRequest
0 голосов
/ 27 мая 2020

Мне предоставлено поле с переносом данных через дефис. Однако бывают случаи, когда данные содержат дефис.
Пример данных:

-4869--149x-1--2925--2927--1520x-1--2459--3400--3403--3404--3410x14--3412--1645--3413--3406x14--3408x14--3415--204x-4--1507x-40--3460x14--4527x-1--3973x-1--1599x-1-

Второй элемент -149x-1- разделяется по дефису перед 1. Это происходит на всех x-1 items.

Я хочу исправить свое регулярное выражение, чтобы пропустить x- и go на следующий дефис.

1 Ответ

1 голос
/ 27 мая 2020

Какой утомительный формат даты. Похоже, что каждый элемент в вашем потоке данных имеет как начальный, так и конечный дефис, чтобы ограничить его. Таким образом, для всех практических целей каждый элемент в потоке данных отделяется от следующего двумя дефисами ('-'), причем первый и последний элементы имеют один дефис перед или после него, соответственно.

Предполагая, что это так, самый простой метод синтаксического анализа - это

  • удалить начальный и конечный дефис из всей строки, а затем
  • разделить его на --

Таким образом, у вас будет примерно такой код:

"-v-1--v-2--v-3--v-4-"
.Trim("-")
.Split(
  new[]{"--"} , // need to do it this way because of overload restrictions
  StringSplitOptions.RemoveEmptyEntries
) ;

, который должен дать массив [ "v-1", "v-2", "v-3", "v-4" ].

[Отредактировано для примечания: если человек элементы данных в этой строке могут начинаться с дефиса или заканчиваться дефисом, возможно, это SOL.]

...