Запитання з тегом «regular-expressions»

призначений для шаблонів, що задають пошук або заміну рядків. Також відомі як `regex` або` regexp`, шаблони описують рядки, які повинні відповідати під час пошуку чи заміни. Emacs забезпечує широку підтримку шаблонів `regex` у багатьох командах. Emacs також пропонує інтерактивний конструктор виразів для таких шаблонів.

2
Розуміння emacs align-regexp
Я читав документацію Emacs, align-regexpале все ще має труднощі в розумінні того, як вона працює. Те, про що я говорю, - це його префіксна форма C-uM-xalign-regexp, а не проста форма M-xalign-regexp. Ось мої запитання: Чи повинен перший параметр (регулярний вираз) відповідати всьому рядку рядка? Що робити, якщо регулярний вираз збігається …

1
Чому регулярні вирази, створені за допомогою конструктора regex, використовують синтаксис, відмінний від інтерактивних регулярних виразів?
Отже, використовуючи звичайний конструктор виразів (Mx re-builder), знаходження рядків, які закінчуються на \ займає "\\ $", а при пошуку та заміні регулярними виразами займає лише "\ $". Я б очікував, що конструктор регулярних виразів створить прямо придатні вирази, так що ж пояснює цю різницю?

2
Що таке регулярний вираз, щоб відповідати символу нового рядка?
У регулярному вираженні Emacs \nне відповідає новому символу рядка \n. Чи я правильний, що $відповідає позиції між новим символом рядка та символом безпосередньо перед новим символом рядка. наприклад для рядка abc\n, $відповідає позиції між cі \n? Який регекс відповідає \n?

6
Отримати всі збіги з регулярним виразом як буфер
Сьогодні на сайті Exchange Golf Stack Exchange я знайшов цю відповідь у Clojure на запитання "Отримати всі посилання на веб-сторінці". (->> (slurp "http://www.stroustrup.com") (re-seq #"(?:http://)?www(?:[./#\+-]\w*)+")) Без фантазії макрос, це просто так: (re-seq #"(?:http://)?www(?:[./#\+-]\w*)+" (slurp "http://www.stroustrup.com")) Це повертає список: ("http://www.morganstanley.com/" "http://www.cs.columbia.edu/" "http://www.cse.tamu.edu" ...) Чи можу я зробити щось подібне в Emacs …

3
Elisp regexps ^ і $ vs `і '
Посібник описує спеціальні символи regexp ^та $. Як і у більшості діалектів регулярних виразів, які я знаю, вони, здається, відповідають початковій чи кінці рядка. Однак я також виявив, що є `і 'персонажі. Виходячи з знайденого тут пояснення , вони, здається, також відповідають початковій чи кінці рядків. Чи не могли б …

1
Як створити динамічне регулярне вираження за допомогою rx?
Я хочу використовувати rxдля створення регулярних виразів зі значеннями часу виконання. В даний час я роблю це: (setq strings '("foo" "bar" "baz")) (eval `(rx symbol-start (or ,@strings) symbol-end)) Однак я вважаю за краще уникати використання eval. Я знайшов rx-to-string, але незрозуміло, яку ФОРМУ я повинен написати: ;; error: Unknown rx …

2
Як я можу перевірити та використовувати регулярний вираз Perl інтерактивно?
Скажіть, у мене буфер з текстом. Я хотів би перевірити регулярний вираз (в ідеалі тип Perl) проти мого буфера і Emacs виділити відповідність на ньому. Наприклад, такий регекс ( узятий із Вікіпедії ): (?<=\.) {2,}(?=[A-Z]) відповідатиме наступному тексту: Цей регулярний вираз, зокрема, відповідає щонайменше двом пробілам, що виникають після періоду …

2
Чи є у elisp буквами regexp?
Велика кількість нахилів, які потрібні мої повторні виразки, є досить божевільною. Чи є в elisp буквали regexp, тож я можу написати щось подібне rx"some\(regexp\)" замість "some\\(regexp\\)"

3
Чи є еквівалент командам заміщення у стилі sed від vim?
Одне з речей, які мені не вистачає від vim, - це можливість ввести команду заміщення, яка працюватиме над декількома рядками, наприклад: :/begin/,/end/s/foo/bar/g Наведена вище команда замінює "foo" на "bar", починаючи з першого рядка, що містить "start" і закінчуючи наступним рядком після того, що містить "end". Чи є спосіб зробити щось …

7
Як я можу практикувати інтерактивний пошук і заміну регулярними виразами в Emacs?
Пошук і заміна за допомогою регулярних виразів - це, очевидно, потужний інструмент для користувача Emacs, який може регулярно виконувати ці дії. Однак, як початківця Emacs (та / або програмування), регулярні вислови потрібно вивчати та практикувати. Чи можу я вивчати та тренувати регулярні вирази інтерактивно в Emacs, подібно до вбудованого підручника …

2
Поступово замініть заданий рядок
Скажімо, у мене є такий текст, як це нижче: Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Змінного струму (нн) Тепер я хочу замінити такі nnцифри Змінного струму …

1
підтримка для регулярного виразу дивитися позаду і вперед?
Мені потрібно виконати заміни регулярного виразу, таким, що fooв foo barзбігається, але fooв foo bazні. Зазвичай я б використовував регулярний вигляд заздалегідь, наприклад foo(?=bar). Однак, схоже, Emacs не може цього зробити? Vim здається дієздатним , але злий режим у космосах не може.

1
Як шукати арабське слово в тексті без його діакритики / наголосів?
В арабській мові, як і в деяких інших мовах, є те, що називається діакритикою для посилення вимови. Не існує угоди про те, скільки діакритиків слід написати за одне слово. Деякі використовують мінімум (який я вважаю за краще) достатньо, щоб розмежувати вимову, тоді як деякі використовують їх зайво або просто в …

1
Злий режим і регулярні вирази
У Vim, якщо я хочу шукати всі назви змінних LX, де X - це число, я можу просто ввести /L\d. Однак, схоже, це не працює evil. Чи є інший синтаксис для регулярних виразів у режимі Evil, чи мені доведеться переглядати деякі функції Emacs для пошуку та заміни, використовуючи регулярні вирази? …

1
'огляд назад'
У мене є використання коду (looking-back … (line-beginning-position)). Док-рядок looking-backстверджує, що краще уникати цієї функції через повільність. Мені цікаво, чи буде наступний підхід швидше? (save-excursion (goto-char (line-beginning-position)) (looking-at regexp stuff))

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.