提问人:Madara's Ghost 提问时间:10/5/2011 最后编辑:Madara's Ghost 更新时间:10/5/2011 访问量:384
合并多个 REGEX 语句
Merge multiple REGEX statements
问:
我有一个示例字符串。
This should be **bold**, *indented* or ***bold and indented***.
使用 3 个正则表达式对字符串进行解析,这些正则表达式一个接一个地运行,以获得以下结果:
This should be <b>bold</b>, <i>indented</i> or <b><i>bold and indented</i></b>.
这很简单,工作正常。但是,我想为我节省几行(如果可能,更漂亮,更有效率,那为什么不呢?),然后合并它们。在单个正则表达式语句中进行所有替换。是否有可能提高效率?还是我应该保持原样?(即使我应该这样做,我也希望看到可能的解决方案?
我的匹配语句:
\*\*\*(.+?)\*\*\*
-><b><i>$1</b></i>
\*\*(.+?)\*\*
-><b>$1</b>
\*(.+?)\*
-><i>$1</i>
答:
2赞
Amber
10/5/2011
#1
老实说,将它们保留为 3 个单独的正则表达式几乎可以肯定......
- 更具可读性
- 简单
- (由于 #1 和 #2)更易于维护。
行数越少并不总是越好,尤其是在正则表达式方面。
此外,您实际上只需要 2 个正则表达式 - 粗体和斜体。只要总是先运行粗体:
***foo***
在粗体正则表达式之后......
*<b>foo</b>*
然后斜体正则表达式使...
<i><b>foo</b></i>
哪个是正确的输出。(首先运行粗体的原因是因为斜体会匹配,因为哪个是错误的。***
<i>*</i>
评论
0赞
Madara's Ghost
10/5/2011
不过,对于理论研究,您能举一个可行的例子吗?
1赞
Amber
10/5/2011
其实不然,因为基本正则表达式不允许在其替换中使用逻辑(例如,你不能说“在这些条件下用这个字符串替换,或者在这些条件下用那个字符串替换”)。某些语言具有基于回调的正则表达式替换,可以这样做,但您必须先指定一种语言。
下一个:响应式富编辑器预览
评论