我想使用正则表达式匹配一个正好2个字符的字符串,并且这两个字符必须介于0和9之间.当ASP.NET MVC时,要匹配的字符串将来自单行文本输入字段视图呈现
到目前为止,我有正则表达式
[0-9]{2}
Run Code Online (Sandbox Code Playgroud)
并从以下示例字符串输入列表中
我应用正则表达式时返回以下匹配项
所以,我有一半的解决方案....我实际想要强制执行的是字符串也正好是2个字符长,所以从字符串列表中,唯一应该匹配的是
12
Run Code Online (Sandbox Code Playgroud)
我是正则表达式的业余爱好者,我只是用它来验证ASP.NET MVC模型上的卡片发行号,如下所示....
[Required]
[RegularExpression("[0-9]{2}")]
public string IssueNumber { get; set; }
Run Code Online (Sandbox Code Playgroud)
我确信我所要求的是非常简单但我无法找到任何限制长度的例子作为匹配的一部分.
提前致谢.
我想使用正则表达式过滤python中的字符串列表.在以下情况中,仅保留扩展名为".npy"的文件.
代码不起作用:
import re
files = [ '/a/b/c/la_seg_x005_y003.png',
'/a/b/c/la_seg_x005_y003.npy',
'/a/b/c/la_seg_x004_y003.png',
'/a/b/c/la_seg_x004_y003.npy',
'/a/b/c/la_seg_x003_y003.png',
'/a/b/c/la_seg_x003_y003.npy', ]
regex = re.compile(r'_x\d+_y\d+\.npy')
selected_files = filter(regex.match, files)
print(selected_files)
Run Code Online (Sandbox Code Playgroud)
同样的正则表达式在Ruby中适用于我:
selected = files.select { |f| f =~ /_x\d+_y\d+\.npy/ }
Run Code Online (Sandbox Code Playgroud)
Python代码有什么问题?
例如,我从 REST API 收到了具有这种风格的文本
?
?
????? ????????????? ???? ? ?????G?
但这不是斜体、粗体或下划线,因为它是字符串类型。这种文字使它失败了我的正则表达式^[a-zA-Z0-9._]*$
我想标准化在标准字符串中收到的这个字符串,以使我的 Regex 仍然有效。
我尝试在 TypeScript 中使用正则表达式:
const pass = /^[\pL\pM\pN_-]+$/u.test(control.value) || !control.value;
Run Code Online (Sandbox Code Playgroud)
但我得到了这个错误:
Typescript 中的此正则表达式方言不允许类别简写
为什么我会收到此错误,如何修复它?
我正试图从Thomson-Reuters Web of Science中提取出版年份的ISI风格数据."Publication Year"的行看起来像这样(在一行的最开头):
PY 2015
Run Code Online (Sandbox Code Playgroud)
对于我正在编写的脚本,我已经定义了以下正则表达式函数:
import re
f = open('savedrecs.txt')
wosrecords = f.read()
def findyears():
result = re.findall(r'PY (\d\d\d\d)', wosrecords)
print result
findyears()
Run Code Online (Sandbox Code Playgroud)
然而,这会产生假阳性结果,因为该模式可能出现在数据的其他地方.
所以,我想只匹配一行开头的模式.通常我会^用于此目的,但r'^PY (\d\d\d\d)'未能匹配我的结果.另一方面,使用\n似乎做我想要的,但这可能会导致我的进一步复杂化.
最近我在java/groovy中使用了很多正则表达式.为了测试,我经常使用regex101.com.显然我也在看正则表达式的表现.
有一件事我注意到.*正确使用可以显着提高整体性能.首先,使用.*介于两者之间,或者更好地说不是正则表达式的结尾是性能杀戮.
例如,在此正则表达式中,所需的步骤数为27:
如果我先改变.*到\s*,这将减少到16显著所需的步骤:
但是,如果我第二个变化.*来\s*,它没有任何进一步降低步骤:
我有几个问题:
\s和.*.我知道不同之处.我想知道为什么\s和.*成本根据他们在完整正则表达式中的位置而有所不同.然后正则表达式的特征可能根据它们在整体正则表达式中的位置而成本不同(或者基于除位置之外的任何其他方面,如果有的话). 我想删除.除最后一个字符串之外的所有字符串substring = .
例如:
1.2.3.4
Run Code Online (Sandbox Code Playgroud)
应成为:
123.4
Run Code Online (Sandbox Code Playgroud) 我试图用正则表达式过滤字符串列表,如本答案所示.但是代码会产生意外结果:
In [123]: r = re.compile('[0-9]*')
In [124]: string_list = ['123', 'a', '467','a2_2','322','21']
In [125]: filter(r.match, string_list)
Out[125]: ['123', 'a', '467', 'a2_2', '322_2', '21']
Run Code Online (Sandbox Code Playgroud)
我期待输出['123', '467', '21'].
我是一个完整的Reg-exp菜鸟,所以请耐心等待.试图谷歌这个,但还没有找到它.
编写正则表达式匹配以点开头的文件(例如.buildpath或.htaccess?)的适当方法是什么?
非常感谢!
我需要清理文件名.所以我有这个代码:
//\W_ is any non-word character (not [^a-zA-Z0-9_]).
Regex regex = new Regex(@"[\W_]+");
return regex.Replace(source, replacement);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但现在我不想删除减号( - ),所以我将正则表达式更改为:
[\W_^-]+
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我错过了什么?
regex ×9
python ×3
.net ×1
asp.net-mvc ×1
c# ×1
javascript ×1
string ×1
typescript ×1
unicode ×1