Есть ли простой способ игнорировать пробелы в целевой строке при поиске совпадений с использованием шаблона регулярного выражения? Например, если я ищу «кошки», я хочу, чтобы совпадали «c ats» или «ca ts». Я не могу заранее вырезать пробелы, потому что мне нужно найти начальный и конечный индекс соответствия (включая любые пробелы), чтобы выделить это совпадение, и любые пробелы должны быть там для целей форматирования.
regex
whitespace
Стивен
источник
источник
^([a-z]\s*)+$
Обращаясь к комментарию Стивена к ответу Сэма Дюфеля
Это должно помочь:
На этой странице вы найдете все возможные варианты слова «кошки».
Вы также можете решить эту проблему с помощью условных выражений, но они не поддерживаются в javascript-версии регулярных выражений.
источник
new RegExp('cats'.split('').join('(?:\n\s*)?'))
Хотя принятый ответ является технически правильным, более практичный подход, если это возможно, - просто удалить пробелы как из регулярного выражения, так и из строки поиска.
Если вы хотите искать «мои кошки» вместо:
Просто сделать:
Предупреждение: вы не можете автоматизировать это в регулярном выражении, просто заменив все пробелы пустыми строками, потому что они могут возникнуть в отрицании или иным образом сделать ваше регулярное выражение недействительным.
источник
Вы можете поместить
\s*
между каждым символом в строке поиска, поэтому, если вы ищете кота, вы должны использоватьc\s*a\s*t\s*s\s*s
Это долго, но вы, конечно, можете строить строку динамически.
Вы можете увидеть, как это работает здесь: http://www.rubular.com/r/zzWwvppSpE
источник
Если вы хотите разрешить только пробелы, тогда
должен это сделать. Чтобы также разрешить вкладки, используйте
Удалите
\b
якоря, если вы также хотите найтиcats
в таких словах, какbobcats
илиcatsup
.источник
Этот подход можно использовать для автоматизации этого (следующее примерное решение находится на Python, хотя, очевидно, его можно портировать на любой язык):
вы можете заранее удалить пробелы и сохранить позиции непробельных символов, чтобы вы могли использовать их позже, чтобы найти совпадающие позиции границ строки в исходной строке, как показано ниже:
Если вы хотите пойти дальше, вы можете создать объект соответствия и вместо этого вернуть его, так что использование этого помощника будет более удобным.
И, конечно, производительность этой функции также можно оптимизировать, этот пример просто показывает путь к решению.
источник