Regex 减少格式化字符串中的冗余(节)
我正在为正则表达式相关的操作从一些基本字符串中手工制作许多字符串,我想知道是否有一种不那么冗长的方法来编写这个 我的基本字符串有:Regex 减少格式化字符串中的冗余(节),regex,string-formatting,stanza,Regex,String Formatting,Stanza,我正在为正则表达式相关的操作从一些基本字符串中手工制作许多字符串,我想知道是否有一种不那么冗长的方法来编写这个 我的基本字符串有: val ALPHA = "[a-zA-Z]" val ODD = "[13579]" val EVEN = "[02468]" val INEQ = "[<>]" 理想情况下,我可以写一些关于 evaluate-template $ "Today's math l
val ALPHA = "[a-zA-Z]"
val ODD = "[13579]"
val EVEN = "[02468]"
val INEQ = "[<>]"
理想情况下,我可以写一些关于
evaluate-template $ "Today's math lesson is ({ODD}) {INEQ} ({ODD}|{EVEN})"
我认为对于编写正则表达式这样的问题,您可能需要比格式化字符串更健壮的东西。例如,声明正则表达式类型:
deftype Regex:
String <: Regex
defstruct AnyOf <: Regex:
regexes:Tuple<Regex>
defmethod print (o:OutputStream, a:AnyOf):
val rs = regexes(a)
val last = length(rs) - 1
print(o, "(%*|%_)" % [rs[0 to last], rs[last]])
defstruct AllOf <: Regex:
regexes:Tuple<Regex>
defmethod print (o:OutputStream, a:AllOf):
print(o, "%*" % [regexes(a)])
defstruct AtLeastOne <: Regex:
regex:Regex
defmethod print (o:OutputStream, a:AtLeastOne):
print(o, "%_+" % [regex(a)])
defstruct ZeroOrMore <: Regex:
regex:Regex
defmethod print (o:OutputStream, a:ZeroOrMore):
print(o, "%_*" % [regex(a)])
val ALPHA: Regex = "[a-zA-Z]"
val ODD : Regex = "[13579]"
val EVEN : Regex = "[02468]"
val INEQ : Regex = "[<>]"
println(AllOf(["Today's math lesson is ", ODD, " ", INEQ, " ", AnyOf([ODD, EVEN])]))
deftype正则表达式:
一串
deftype Regex:
String <: Regex
defstruct AnyOf <: Regex:
regexes:Tuple<Regex>
defmethod print (o:OutputStream, a:AnyOf):
val rs = regexes(a)
val last = length(rs) - 1
print(o, "(%*|%_)" % [rs[0 to last], rs[last]])
defstruct AllOf <: Regex:
regexes:Tuple<Regex>
defmethod print (o:OutputStream, a:AllOf):
print(o, "%*" % [regexes(a)])
defstruct AtLeastOne <: Regex:
regex:Regex
defmethod print (o:OutputStream, a:AtLeastOne):
print(o, "%_+" % [regex(a)])
defstruct ZeroOrMore <: Regex:
regex:Regex
defmethod print (o:OutputStream, a:ZeroOrMore):
print(o, "%_*" % [regex(a)])
val ALPHA: Regex = "[a-zA-Z]"
val ODD : Regex = "[13579]"
val EVEN : Regex = "[02468]"
val INEQ : Regex = "[<>]"
println(AllOf(["Today's math lesson is ", ODD, " ", INEQ, " ", AnyOf([ODD, EVEN])]))
Today's math lesson is [13579] [<>] ([13579]|[02468])