Ruby 正则表达式链替换问题
我试图开发一种超基本的模板语言,但我对RegEx有问题,我试图转换:Ruby 正则表达式链替换问题,ruby,regex,Ruby,Regex,我试图开发一种超基本的模板语言,但我对RegEx有问题,我试图转换: # Tilte ## Subtitle ### Subsubtitle Lorem ipsum b(dolor) sit i(amet), consectetur u(adipisicing) elit 为此: <h1>Title</h1> <h2>Subtilte</h2> <h3>Subsubtitle</h3> Lorem ipsum <st
# Tilte
## Subtitle
### Subsubtitle
Lorem ipsum b(dolor) sit i(amet), consectetur u(adipisicing) elit
为此:
<h1>Title</h1>
<h2>Subtilte</h2>
<h3>Subsubtitle</h3>
Lorem ipsum <strong>dolor</strong> sit <i>amet</i>, consectetur <u>adipisicing</u> elit
标题
电影字幕
子标题
Lorem ipsumdolorsit amet,Concetetur Adipising Elite
但我明白了:
<h1></h1>
<h2>TEma 4</h2>
<h3>Subtitle</h3>
Lorem ipsum <strong>Subsubtitle</strong> sit i(amet), consectetur u(adipisicing) elit
特马4
字幕
Lorem ipsum次级标题一级(amet)、二级(Adipising)精英
这是我的密码:
input = ARGV[0]
regExes = {
h1: [/^# (.*)$/, "<h1>", "</h1>"],
h2: [/^## (.*)$/, "<h2>", "</h2>"],
h3: [/^### (.*)$/, "<h3>", "</h3>"],
b: [/b\((.*)\)/, "<strong>", "</strong>"],
}
strFile = File.read input
puts "\t", strFile
for index, regEx in regExes
actualNode = regExes[index]
print actualNode, "\n"
strFile.gsub! actualNode[0], "#{actualNode[1]}#{$1}#{actualNode[2]}"
end
puts strFile
input=ARGV[0]
正则表达式={
h1:[/^#(.*)$/,“”,“”,“”],
h2:[/^##(.*)$/,“”,“”,“”],
h3:[/^####(.*)$/,“”,“”,“”],
b:[/b\(.*)/,“,””,
}
strFile=File.read输入
放置“\t”,strFile
对于索引,正则表达式中的正则表达式
实际节点=正则表达式[索引]
打印实际节点“\n”
strFile.gsub!actualNode[0],“#{actualNode[1]}#{$1}#{actualNode[2]}”
结束
放置strFile
我该怎么办?而不是
gsub代码>行尝试此
strfile = actualNode[1]+actualNode[0].match(strfile)[1]+actualNode[2] if actualNode[0].match(strfile)
您需要按此顺序定义正则表达式(注意使用强、下划线和粗体标记的惰性匹配,以及每个标记前面的单词边界\b
,以确保我们不匹配单词的某些部分):
请参见此使用惰性匹配:/b\(.*?)/
好的,有一件事已经解决,但h组标记仍然存在问题。问题位于设置的值中。您包括我编写+实际代码[2]
的部分吗?你滚动查看整行?我在irb中测试了这个。
regExes = {
h3: [/^### (.*)$/, "<h3>", "</h3>"],
h2: [/^## (.*)$/, "<h2>", "</h2>"],
h1: [/^# (.*)$/, "<h1>", "</h1>"],
b: [/\bb\((.*?)\)/, "<strong>", "</strong>"],
i: [/\bi\((.*?)\)/, "<i>", "</i>"],
u: [/\bu\((.*?)\)/, "<u>", "</u>"],
}
input = input.gsub(actualNode[0], "#{actualNode[1]}\\1#{actualNode[2]}")