Я работал над уточнением этого ответа; и выяснил, что приведенное ниже регулярное выражение не работает должным образом (в соответствии с его значением) в R
.
+?on.*$
Согласно моему пониманию регулярного выражения, указанное выше регулярное выражение соответствует:
лениво пробел один или несколько раз, затем on
с последующим любым (кроме новой строки) до конца.
INPUT:
Posted by ondrej on 29 Feb 2020.
Posted by ona'je on 29 Feb 2020.
ВЫХОД (по моему мнению, если вышеуказанный шаблон регулярного выражения в тестовой строке заменен на "")
Posted by
Posted by
И когда я пытаюсь его проверить in python (реализация здесь) , javascript и java (реализация здесь) ; Я получаю ожидаемый результат.
const myString = "Posted by ondrej on 29 Feb 2020.\nPosted by ona'je on";
console.log(myString.replace( new RegExp(" +?on.*$","gm"),""));
С другой стороны, если я пытаюсь реализовать то же регулярное выражение в R (реализация здесь) ; Я получаю результат как
Posted by ondrej
Posted by ona'je
, и это неожиданно.
Сомнение
Я подумал, что, возможно, парсер регулярных выражений для R
работает по-другому (возможно, справа налево). Я прочитал документацию о том, как регулярное выражение работает в R
, но не нашел ничего отличного от других языков для вышеуказанного регулярного выражения. Я могу что-то здесь упустить. Я плохо разбираюсь в R
, но насколько я знаю регулярное выражение; Я считаю, что приведенное выше регулярное выражение должно работать так же, как оно работает в java
, javascript
и python
(может быть и в pcre
) для всех стандартных механизмов регулярных выражений (насколько мне известно). Мой вопрос: , почему указанное выше регулярное выражение работает по-другому в R
?