2016-07-05 5 views
-1

Я пытаюсь написать некоторые регулярные выражения, имитирующие функции includes и endsWith в JavaScript. У меня есть строка («ted»). Я хочу посмотреть, включена ли эта строка или в конце любой из других строк, используя регулярные выражения.Строковые регулярные выражения - включает в себя и заканчивается с

Я видел несколько примеров с \b, которые я никогда раньше не видел. Это заставило меня задуматься, были ли какие-то улучшения в RegEx, о которых я не смог найти.

+0

'/ Ted /' и '/ Ted $ /' и 'Array.prototype.some'? –

+3

Хотелось бы, чтобы люди добавляли комментарии, когда они сбрасывали вниз. В основном, покажите, что вы пробовали, и люди больше готовы помочь, а не просто писать код для вас. – SoluableNonagon

+0

Да, нужна дополнительная информация, что вы подразумеваете под «другими строками»? Не могли бы вы просто искать другие строки один за другим через цикл, используя строку «ted»? В этом случае, я думаю, вы хотите, чтобы в конце выражения было \ g regex (g означает глобальное), он будет искать всю строку для всех вхождений в строку, которую вы ищете. –

ответ

0

Описание

(?:(?=(?:(for)$)?)(for)) 

Regular expression visualization

** Для того, чтобы увидеть изображение лучше, просто щелкните правой кнопкой мыши на изображение и выберите пункт Открыть в новом окне

Это регулярное выражение будет делать следующее:

  • имитировать включает и завершает функции
  • , если строка содержит подстроку for, тогда группа захвата 2 будет заполнена.
  • если строка заканчивается for, тогда группа захвата 1 будет заполнена.

Примечание:

  • В Javascript вы можете запустить матч затем использовать .index свойства матча вернуть позиции символа матча.
  • Это регулярное выражение, подстрока for также будет соответствовать, если подстрока находится внутри других слов, таких как before, но это, похоже, выходит за рамки настоящего вопроса.

Пример

Демо

https://regex101.com/r/bO5vO3/1

Пример текста

Are these the droids for we for are looking for? These are not the droids you are looking for 

Match:    ^1^ ^2^    ^3^           ^4^ 

Вторая линия, показывающая Positio ns был вставлен вручную для иллюстрации и не должен рассматриваться как часть фактического текста примера.

Образец Матчи

MATCH 1 
2. `for` 

MATCH 2 
2. `for` 

MATCH 3 
2. `for` 

MATCH 4 
1. `for` 
2. `for` 

Пояснение

NODE      EXPLANATION 
---------------------------------------------------------------------- 
    [\$]      any character of: '\$' 
---------------------------------------------------------------------- 
    this-translate   'this-translate' 
---------------------------------------------------------------------- 
    [(]      any character of: '(' 
---------------------------------------------------------------------- 
    '      '\'' 
---------------------------------------------------------------------- 
    (      group and capture to \1: 
---------------------------------------------------------------------- 
    (?:      group, but do not capture (0 or more 
          times (matching the most amount 
          possible)): 
---------------------------------------------------------------------- 
     [^'\\]     any character except: ''', '\\' 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     \\      '\' 
---------------------------------------------------------------------- 
     .      any character except \n 
---------------------------------------------------------------------- 
    |      OR 
---------------------------------------------------------------------- 
     ''      '\'\'' 
---------------------------------------------------------------------- 
    )*      end of grouping 
---------------------------------------------------------------------- 
)      end of \1 
---------------------------------------------------------------------- 
    '      '\'' 
---------------------------------------------------------------------- 
    [)]      any character of: ')' 
---------------------------------------------------------------------- 
    ;      ';' 
---------------------------------------------------------------------- 
Смежные вопросы