2015-09-18 7 views
2

Когда дана строка, например .:Javascript разделить регулярное выражение

daily (similar term)|day-to-day (similar term)|day-after-day (similar term)|every day (similar term)|nightly (similar term)|first-string (similar term)|lawful (similar term)|orderly (similar term)|rule-governed (similar term)|official (similar term)|prescribed (similar term)|regularized (similar term)|regularised (similar term)|routine (similar term)|standard (similar term)|stock (similar term)|timed (similar term)|uniform (similar term)|weak (similar term)|well-ordered (similar term)|rhythmical (related term)|rhythmic (related term)|symmetrical (related term)|symmetric (related term)|systematic (related term)|irregular (antonym)veritable|typical (similar term)standard (similar term)irregular (antonym)scheduled (similar term)usual (similar term)even|steady (similar term)steady|frequent (similar term)standing (similar term)|irregular (antonym)unconstipated|diarrheal (similar term)|diarrhoeal (similar term)|diarrhetic (similar term)|diarrhoetic (similar term)|diarrheic (similar term)|diarrhoeic (similar term)|lax (similar term)|loose (similar term)|constipated (antonym)even|symmetrical (similar term)|symmetric (similar term)normal (similar term)full-time (similar term)habitue|fixture|patron|frequentersoldierfollowersize 

как создать массив синонимов, например

var thisArr = ['daily', 'day-to-day', 'day-after-day', 'every day', 'nightly'] 

и т.д., но там, где он говорит: «нерегулярные (антоним)», я не хочу, чтобы включить anytonym (в данном случае «нерегулярные»). Другие слова (а не заключенные в скобки) можно включить. Но я не хочу, чтобы "|" символов или скобок. Я пробовал

var thisRegExp = /\|(.*?)\|/; 

и я могу удалить "|" для получения, например.

"day-to-day (similar term)" 

, но я хочу, чтобы удалить квадратные скобки вещи, а также и любые пространства подле скобки я думаю, так как они не были бы частью «пары слов». Любая помощь очень ценится. Спасибо, MediaMaker.

+0

Как насчет '/ \ s * \ (. *? \) \ |? /'? – Biffen

+0

Что такое «типичный (аналогичный термин) стандарт (аналогичный термин) нерегулярный (антоним) запланированный (аналогичный термин) обычный (аналогичный термин) даже«? нет '' ', вы хотите, чтобы он соответствовал или нет? –

+0

Привет, Биффен, это хорошо работает для меня с функцией split, но на 35-м предмете внезапно у него есть «симметричный (аналогичный термин) нормальный (аналогичный термин) полный рабочий день (аналогичный термин) habitue | fixture | patron | oftenersoldierfollowersize». К сожалению, оригинальное формирование строк несовместимо, я думаю, именно поэтому он и делает это. Спасибо – MediaMaker

ответ

1

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

([^|()]+)(?= \(similar term|\||$) 

DEMO

  • ([^|()]+) - один или более символов, но не |, (, ) соответствовать слово Разногласия между | к кронштейну
  • (?= \(similar term|\||$) - положительный прогноз для (аналогичный термин), или | или конец строки, чтобы соответствовать только подобные слова или слова, не описания в скобках

, чтобы получить только аналогичные (без (similar word)) или не описать словами.

+0

Привет m.cekiera, я получил эту работу (вроде) с функцией split. Кажется, что он генерирует термин для каждого второго элемента массива, а альтернативы - это то, что было отфильтровано. Или я чего-то не хватает? Благодарю. – MediaMaker

+0

@MediaMaker извините, мой miskate, это регулярное выражение для 'match()' not 'split()' method, с 'split()' вы получите обратный эффект, я попытаюсь сделать regex для 'split()' –

+0

Я добавил «g» в соответствии с вашей демонстрацией и использовал ее с совпадением, и ir отлично работает! Спасибо :) Вот что я использовал/([^ |()] +) (? = \ (Аналогичный член | \ || $)/g – MediaMaker

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