Questions tagged «regular-expressions»

用于指定搜索或替换字符串的模式。模式也称为`regex`或`regexp`,描述了在搜索或替换时要匹配的字符串。Emacs在许多命令中为`regex`模式提供了广泛的支持。Emacs还为此类模式提供了一个交互式表达式生成器。

2
了解emacs align-regexp
我已经阅读了Emacs文档,align-regexp但是仍然很难理解它是如何工作的。我要说的是它的前缀形式C-uM-xalign-regexp,而不是简单形式M-xalign-regexp。这是我的问题: 第一个参数(正则表达式)是否必须与字符串的整个行匹配?如果正则表达式仅匹配字符串的一部分怎么办? 向第二个参数提供什么(要修改的括号组(如果为负,则进行调整))?据我了解,我需要提供捕获的组号(从1开始计数),对吗?“如果否定则为正”是指,如果我希望第3组正确对齐,我将提供-3输入内容吗? 第三个参数“间距量(或列,如果为负)”是什么意思?我只是完全不了解此参数的作用。 我收集了一些文本示例进行练习。如果任何人都可以使用下面的文字作为示例,那将非常有帮助。 从 class CreateStudents < ActiveRecord::Migration def change create_table :students, :comment => "学生信息表" do |t| t.string :political_status, :comment => "政治面貌" t.string :education_level, :comment => "培养层次" t.string :enroll_method, :comment => "入学方式" t.date :enrolled_at, :comment => "入学时间" t.string :charge_type, :comment => "收费类别" t.string :enrolled_year, :comment => "学籍年度" t.string …



6
以列表形式获取缓冲区中的所有正则表达式匹配项
今天,在Code 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 Lisp中做类似的事情吗? 也许像(re-seq regexp (buffer-string))这样的函数返回'(firstmatch secondmatch thirdmatch ...)?

3
Elisp正则表达式^和$ vs`和'
本手册介绍了regexp特殊字符^和$。就像我所知道的大多数正则表达式方言一样,它们似乎与字符串的开头或结尾匹配。但是,我也发现有`和'字符可用。根据此处的说明,它们似乎也匹配字符串的开头或结尾。有人可以解释这些特殊字符之间的区别,并举例说明何时使用它们吗? 当我查看的值时auto-mode-alist,它们似乎可以互换使用以匹配字符串的结尾: (... ("\\.scss\\'" . scss-mode) ("\\.ya?ml$" . yaml-mode) ...)

1
如何使用rx创建动态正则表达式?
我想用来rx创建带有运行时值的正则表达式。 目前,我正在这样做: (setq strings '("foo" "bar" "baz")) (eval `(rx symbol-start (or ,@strings) symbol-end)) 但是,我宁愿避免使用eval。我已经找到rx-to-string,但尚不清楚我应该写什么形式: ;; error: Unknown rx form `symbol-start (rx-to-string '(symbol-start (or ,@strings) symbol-end)) 如何rx在运行时构建表达式?

2
如何交互测试和使用Perl正则表达式?
说我有一个文本缓冲区。我想针对我的缓冲区测试一个正则表达式(最好是Perl类型),并让Emacs突出显示它的匹配项。 例如,以下正则表达式(摘自Wikipedia): (?<=\.) {2,}(?=[A-Z]) 在以下文本上匹配如下: 该正则表达式尤其匹配在句点之后(.)和大写字母之前出现的至少两个空格。 Emacs是否为Perl正则表达式提供交互式正则表达式匹配器? 如果对后者的回答为“否”: 有没有理由在Emacs中从来没有考虑过对Perl正则表达式的本机支持?(考虑到它是Unix / Linux中众所周知的标准) 如何构建这样的Perl正则表达式匹配器?(也许是在后台调用Perl,还是将Perl正则表达式预先转换为受支持的变体?)



7
如何在Emacs中交互地练习搜索和替换正则表达式?
对于可以例行执行这些操作的Emacs用户而言,使用正则表达式进行搜索和替换显然是一个功能强大的工具。但是,作为Emacs(和/或编程)的初学者,需要学习和练习正则表达式。 与内置的Emacs教程类似,我可以在Emacs中以交互方式学习和训练正则表达式吗?如果没有,还有什么其他建议可以利用Emacs来练习使用正则表达式进行搜索和替换?

2
增量替换给定的字符串
让我们说我下面是这样的文本: 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 交流电(nn) 现在我想nn用这样的数字代替 AC(0) AC(1) AC(2) AC(3) AC(4) 交流电(5) 交流电(6) AC(7) AC(8) AC(9) 交流电(10) 我曾经M-x replace-regexp nn RET \# RET做到这一点。 问题: 我想从开始1而不是从开始替换号码0。或者更确切地说是从指定的数字开始25。我应该如何修改以上命令? 如何更换nn与像数字001,002...... 998,999等等-我指的是前导零

1
支持正则表达式的是后面还是后面?
我需要执行正则表达式查询替换,这样 fooin foo bar匹配,但fooin foo baz不匹配。通常我会使用regex向前看,例如foo(?=bar)。 但是,似乎Emacs无法做到这一点?Vim似乎有能力,但spacemacs中的邪恶模式不能。

1
如何在不带变音符号/重音符号的文本中搜索阿拉伯语单词?
阿拉伯语与其他一些语言一样,有变音符号以增强发音。对于一个单词应该写多少个音调符号没有约定。有些人仅使用最小值(我更喜欢)来消除歧义,而有些人则多余地使用它们或仅出于美学目的。因此,与一个单词相关联的发音符号和发音符号存在很大差异。当我isearch-forward/backward按时C-s/r,如果在没有发音符号的情况下在搜索迷你缓冲区中键入该单词,就会出现问题,如果该单词带有发音符号,它将不会与文本中的相同单词匹配,从而使寻找带有潜在发音符号的单词的任务变得不尽人意。 有没有办法使搜索/正则表达式搜索不知道变音符号?我希望会有一个答案可以扩展到包括regexp C-M-s/r和grep搜索,我经常在头盔弹丸中使用它来搜索多文件乳胶项目中的单词。 更新 很高兴看到Emacs在其所有搜索功能中都对文本进行了剥离(从重音符号/变音符号/您命名),然后将其匹配为默认行为,该默认行为可能会按需关闭前缀不管手头有什么语言 通常,当我搜索某些东西时,我并不希望最好的编辑器(Emacs)会因为某些变音符号或重音而失败,而这些变音符号或重音很少用于完成平凡的文本琐事。

1
邪恶模式和正则表达式
在Vim中,如果要搜索X为数字的所有变量名LX,则只需键入即可/L\d。但是,这似乎不适用于evil。 Evil模式下是否有用于正则表达式的另一种语法,还是我不得不依靠一些Emacs功能来搜索和使用正则表达式进行替换? 我正在使用spacemacs,对Emacs中的大多数事情我一无所知,很高兴整日处于Evil模式:)。

1
“回顾”效果
我有一些使用的代码(looking-back … (line-beginning-position))。Doc字符串looking-back说明,由于速度慢,最好避免使用此功能。我很好奇以下方法会更快吗? (save-excursion (goto-char (line-beginning-position)) (looking-at regexp stuff))

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.