2012-05-31 4 views
0

Я работаю над проектом, где мне нужно найти частоту из заданного текста. Я написал регулярное выражение, которое пытается определить частоту, но я застрял с тем, как C# ручки и как именно я использую его в моем программном обеспеченииРегулярный шаблон выражения для C# с совпадениями

Моего регулярный experssion является (\d*)(([,\.]?\s*((k|m)?hz)*)|(\s*((k|m)?hz)*))$

И я пытаюсь найти значение из

  • 23,2 Гц
  • 24,4Hz
  • 25,0 Hzsadf
  • 26 Гц
  • 27Khz
  • 28hzzhzhzhdhdwe
  • 30,4 Гц
  • 31,8 Гц
  • 4343.34.234 КГц
  • 65SD

Далее Пояснение:

  1. система должна Работа для США и Бельгии. Культура, следовательно, 23,2 (США) = 23,2 (Be)
  2. Я пытаюсь найти цифру, за которой следуют либо khz, mhz, hz или пробел, либо.
  3. Если есть, или. то у него должна быть другая цифра, за которой следуют khz, mhz, hz

Любая помощь аппроксимируется.

+0

Где '65SD' приходят в? – Rawling

+0

Вы не указали, какими должны быть результаты (поэтому, только с входами, трудно знать требуемые выходы). Возможно, лучшим вариантом может быть ручной поворот собственного синтаксического анализатора. – Oded

+0

Это случай с ошибкой :). Я пытаюсь найти только частоту. –

ответ

1

Запуск заменить

(\d+(?:[.,]\d+)?)\s*([KkMm]?[Hh][Zz]) 

для ($1 $2) дает

(23,2 Hz) 
(24,4 Hz) 
(25,0 Hz)sadf 
(26 Hz) 
(27 Khz) 
(28 hz)zhzhzhdhdwe 
29 
(30.4 Hz) 
(31.8 Hz) 
4343.(34.234 Khz) 
65SD 

Любые поправки к желаемому поведению?

обн: это с отрицательным и слово 'назад границей:

(?<![.,0-9])(\d+(?:[.,]\d+)?)\s*([KkMm]?[Hh][Zz])\b 

(23,2 Hz) 
(24,4 Hz) 
25,0 Hzsadf 
(26 Hz) 
(27 Khz) 
28hzzhzhzhdhdwe 
29 
(30.4 Hz) 
(31.8 Hz) 
4343.34.234 Khz 
65SD 
+0

Спасибо, я все еще пытаюсь понять, что вы написали, но мне нужно, чтобы 29 тоже соответствовало:) ... Если нет, я могу использовать фильтр вручную, но –

+0

Я собираюсь объяснить выражение после того, как мы его получим обязательный.Это 29 похожего типа винтов на вещи, хотя - он должен будет соответствовать любому номеру таким образом или все ваши данные в этом случае? –

+0

Не возражаете ли вы сказать мне, что делает: (?: [.,] \ D +)? означает, в частности, почему мы имеем? в конце, когда мы закрываем его с paranthesis –

Смежные вопросы