Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 正则表达式链替换问题_Ruby_Regex - Fatal编程技术网

Ruby 正则表达式链替换问题

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

我试图开发一种超基本的模板语言,但我对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 <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]}")