我正在运行Ruby on Rails 3.0.10和Ruby 1.9.2.我使用以下正则表达式来匹配名称:
NAME_REGEX = /^[\w\s'"\-_&@!?()\[\]-]*$/u
validates :name,
:presence => true,
:format => {
:with => NAME_REGEX,
:message => "format is invalid"
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我试图保存一些像下面这样的词:
Oilalà
Pì
Rùby
...
# In few words, those with accented characters
Run Code Online (Sandbox Code Playgroud)
我有一个验证错误"Name format is invalid..
我怎样才能改变上述正则表达式,从而匹配等也重音符号à,è,é,ì,ò,ù,...?
我有一段时间试图将我的javascript正则表达式转换为Python.
我只是想让这个工作:
print(re.match('e','test'))
Run Code Online (Sandbox Code Playgroud)
...但它打印无.如果我做:
print(re.match('e','est'))
Run Code Online (Sandbox Code Playgroud)
它匹配...它默认匹配字符串的开头吗?匹配时,如何使用结果?
如何进行第一场比赛?是否有比python网站提供的更好的文档?
最近我看到了Apple的2015年WWDC主题演讲.我也查看了一些文档,但是我找不到"if if pattern"部分,它是如何写在他们展示的幻灯片上的.(来自Apple Events的 68分00秒视频)
你知道这是指什么吗?还是语法?
只是为了澄清,当我说多个分配,并行分配,解构绑定我的意思是以下模式匹配宝石
scala> val (x,y) = Tuple2("one",1)
x: java.lang.String = one
y: Int = 1
Run Code Online (Sandbox Code Playgroud)
其分配"one"到x和1到y.
我试图做
val (x,y) = "a b".split()
Run Code Online (Sandbox Code Playgroud)
我期望scala会尝试将模式与模式进行模式匹配,如果数组的长度与模式的长度不匹配,则会抛出运行时异常.
我所有试图轻松转换Array为a的尝试Tuple2都是徒劳的.
scala> Tuple2(Array(1,2):_*)
<console>:7: error: wrong number of arguments for method apply: (T1,T2)(T1, T2)
in object Tuple2
Tuple2(Array(1,2):_*)
^
scala> Tuple2(Array(1,2).toList:_*)
<console>:7: error: wrong number of arguments for method apply: (T1,T2)(T1, T2)
in object Tuple2
Tuple2(Array(1,2).toList:_*)
Run Code Online (Sandbox Code Playgroud)
有没有任何巧妙的方法来使用数组或列表的多个赋值?
arrays functional-programming scala pattern-matching variable-assignment
这是一个难题......
我有两个相同50000+电子产品的数据库,我想将一个数据库中的产品与另一个数据库中的产品相匹配.但是,产品名称并不总是相同的.我已经尝试使用Levenshtein距离来测量弦的相似性但是这没有用.例如,
-LG 42CS560 42-Inch 1080p 60Hz LCD HDTV
-LG 42 Inch 1080p LCD HDTV
Run Code Online (Sandbox Code Playgroud)
这些项目是相同的,但他们的产品名称变化很大.
另一方面...
-LG 42 Inch 1080p LCD HDTV
-LG 50 Inch 1080p LCD HDTV
Run Code Online (Sandbox Code Playgroud)
这些是具有非常相似产品名称的不同产品.
我该如何解决这个问题?
machine-learning pattern-matching string-comparison levenshtein-distance
我有一个函数文字
{case QualifiedType(preds, ty) =>
t.ty = ty ;
Some((emptyEqualityConstraintSet,preds)) }
Run Code Online (Sandbox Code Playgroud)
这会导致错误消息
missing parameter type for expanded function The argument types of an anonymous function
must be fully known. (SLS 8.5) Expected type was:
? => Option[(Typer.this.EqualityConstraintSet, Typer.this.TypeRelationSet)]
Run Code Online (Sandbox Code Playgroud)
我查看了SLS 8.5,但未找到解释.
如果我自己扩展功能
{(qt : QualifiedType) =>
qt match {case QualifiedType(preds, ty) =>
t.ty = ty ;
Some((emptyEqualityConstraintSet,preds)) }}
Run Code Online (Sandbox Code Playgroud)
错误消失了.
(a)为什么这是一个错误?
(b)我该怎么做才能解决这个问题?
我尝试了明显的修复,即: QualifiedType在模式和=>之间添加,但这是一个语法错误.
我注意到的一件事是上下文有所不同.如果我使用函数literal作为声明为期望a的函数的参数QualifiedType => B,则没有错误.但是如果我将它用作期望a的函数的参数A => B,则会出现错误.我希望这里发生的事情是,由于模式可以想象应用于类型为QualifiedType的超类型的对象,编译器不愿意在不保证函数不会应用于的情况下分配明显的类型.任何不是QualifiedType的东西.我真正想要的是能够写出{QualifiedType( preds, ty) => ...} …
我注意到自从HoTT以来,"Axiom K"的讨论经常出现.我相信它与模式匹配有关.我很惊讶我在TAPL,ATTAPL或PFPL中找不到参考.
今天,当在存在的GADT构造函数上进行匹配时,尝试使用延迟模式时出现编译器错误:
存在或GADT数据构造函数不能在惰性(〜)模式中使用
为什么会有这种限制?如果被允许,会发生什么"坏"的事情?
haskell pattern-matching lazy-evaluation existential-type gadt
我正在尝试查找包含大写6个或更多字母数字字符串的记录.一些例子:
PENDING 3RDPARTY CODE27
Run Code Online (Sandbox Code Playgroud)
我正在使用以下声明:
SELECT Details
FROM MyTable
WHERE Details LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Run Code Online (Sandbox Code Playgroud)
这将返回包含任何6个或更多字母单词的所有记录,无论大小写如何.
我添加了一个COLLATE声明:
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%[0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z][0-9A-Z]%';
Run Code Online (Sandbox Code Playgroud)
这没有任何改变.无论如何,它仍会返回带有6个或更多字母单词的记录.
就像测试一样,我试过:
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%pending%';
SELECT Details
FROM MyTable
WHERE Details COLLATE Latin1_General_CS_AS LIKE '%PENDING%';
Run Code Online (Sandbox Code Playgroud)
这两种方法都有效,分别返回包含"待定"和"待定"的记录.所以问题似乎是LIKE克劳斯的模式匹配.
如何执行区分大小写的搜索?
我想申请filter一个迭代器,我想出了这个并且它可以工作,但它超级详细:
.filter(|ref my_struct| match my_struct.my_enum { Unknown => false, _ => true })
Run Code Online (Sandbox Code Playgroud)
我宁愿写这样的东西:
.filter(|ref my_struct| my_struct.my_enum != Unknown)
Run Code Online (Sandbox Code Playgroud)
这给了我一个编译错误
binary operation `!=` cannot be applied to type `MyEnum`
Run Code Online (Sandbox Code Playgroud)
有冗长模式匹配的替代方案吗?我寻找一个宏但找不到合适的宏.