Здесь пара проблем. Во-первых, незначительная проблема: .-,
будет соответствовать как можно меньше до комы, то есть нулевые символы. Вы должны привязать начало согласованной строки.
Более сложная проблема заключается в том, что вы используете буквы на иврите. Проблема в том, что Lua has no concept многобайтовых символов.
Если вы используете 8-битную кодировку, такую как Windows-1255 или ISO-8859-8, то вы, вероятно, можете просто сопоставить класс символов [ת-א]
. Если вы правильно настроили языковой стандарт на иврите, %l
должен отлично работать для вас.
Если вы используете UTF-8 или любую другую кодировку, которая использует многобайтовые символы, тогда вы должны создать регулярное выражение, в котором все еврейские алфавиты будут экранированы как последовательность октетов. Алеф U + 05D0x, который в UTF-8 будет представлен как 0xD7 0x90
. Тав U + 05EA, который будет закодирован как 0xD7 0xAA
.
В Lua вы можете избежать любого 8-битного символа с косой чертой + десятичный код. Все символы на иврите, закодированные в UTF-8, имеют первый байт - 0xD7
, то есть "\215"
. Второй символ может быть от "\144"
до "\170"
. Таким образом, регулярное выражение, которое будет соответствовать одному еврейскому письму, равно "\215[\144-\170]"
. Поместите это в свое исходное регулярное выражение, где у вас есть одиночные точки, соответствующие любому персонажу.
Конечно, приведенные выше рассуждения должны быть изменены для кодировок, отличных от UTF-8. Другое направление, на которое нужно обратить внимание на иврите, - это написание права налево.
Это может быть моим лучшим выбором, спасибо. Но есть ли способ, которым я могу захватить 2 буквы за заданным персонажем? Например, если у меня было «abc, def», я хочу получить 2 буквы до того, что будет «bc». – cnotethegr8
@ cnotethegr8: Сделайте себе одолжение и прочитайте [книгу совы] (http://www.amazon.com/Mastering-Regular-Expressions-Jeffrey-Friedl/dp/0596528124). –
Хм, он не сказал, что идет над «Матчем матча» Луи. (Что отличается от Regex.) Я знаю, как это сделать с регулярным выражением, но Lua отличается от других. – cnotethegr8