MDN为JavaScript RegExp引入了'y'粘性标志.这是一个文档摘录:
ÿ
黏; 仅匹配目标字符串中此正则表达式的lastIndex属性指示的索引(并且不会尝试与任何后续索引匹配).
还有一个例子:
var text = 'First line\nSecond line';
var regex = /(\S+) line\n?/y;
var match = regex.exec(text);
console.log(match[1]); // prints 'First'
console.log(regex.lastIndex); // prints '11'
var match2 = regex.exec(text);
console.log(match2[1]); // prints 'Second'
console.log(regex.lastIndex); // prints '22'
var match3 = regex.exec(text);
console.log(match3 === null); // prints 'true'
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,g全局标志的使用实际上没有任何区别:
var text = 'First line\nSecond line';
var regex = /(\S+) line\n?/g;
var match = regex.exec(text);
console.log(match[1]); // prints 'First'
console.log(regex.lastIndex); // prints '11'
var …Run Code Online (Sandbox Code Playgroud) 我有一些字符串:
String a = "Hello 12 2 3 4 45th World!";
Run Code Online (Sandbox Code Playgroud)
我想将数字连接起来: "Hello 12234 45th World"
通过尝试a.replaceAll("(?<=\\d) +(?=\\d)", ""),我得到的结果如下:
"Hello 1223445th World".
有没有办法只连接数字,而不是数字 + th?
考虑M,T,W,TH,F,S,SU是星期几.
我有正则表达式这是除了一个场景运作良好时,有没有平日的序列,即不存在M, T,W,TH,F,S,SU在字符串中预期的位置.
例如,q10MT有效但q10HT无效.
以下是我的表达:
string expression = "q(\\d*)(M)?(T(?!H))?(W)?(TH)?(F)?(S(?!U))?(SU)?";
Run Code Online (Sandbox Code Playgroud)
如果是q10MT,输出是q10MT正确的,但是如果q10HT输出q10不正确,我的正则表达式应该在没有匹配时不返回值或空字符串.
为实现这一目标,我需要做出哪些改变?
我一直在尝试自学Python,目前正在使用正则表达式.我一直在使用的教学文本似乎旨在教Perl或其他非Python的语言,所以我不得不调整表达式以适应Python.然而,我并不是很有经验,而且我试图让表达起作用.
问题涉及在文本中搜索价格实例,表示无小数,500美元或小数,500.10美元.
这是文本建议的内容:
\$[0-9]+(\.[0-9][0-9])?
Run Code Online (Sandbox Code Playgroud)
复制文本,我使用此代码:
import re
inputstring = "$500.01"
result = re.findall( r'\$[0-9]+(\.[0-9][0-9])?', inputstring)
if result:
print(result)
else:
print("No match.")
Run Code Online (Sandbox Code Playgroud)
但是,结果不是$ 500.01,而是:
.01
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪.如果我删除括号和可选的小数部分,它可以正常工作.所以,使用这个:
\$[0-9]+\.[0-9][0-9]
Run Code Online (Sandbox Code Playgroud)
我明白了:
$500.01
Run Code Online (Sandbox Code Playgroud)
如何使正则表达式返回带小数部分和不带小数部分的值?
谢谢.
我在捕获句子中的特定字符串时遇到一些麻烦。
我使用的正则表达式是\b[0-9]{9,12}\b捕获 9 到 12 位数字的数字。我用它来指定确切的数字的边界,但问题是,当我有一个与此正则表达式匹配的数字后跟一个点时,例如,正则表达式仍然匹配并给我带来很多麻烦。
正如我搜索的那样,问题是也\b使用一些特殊字符作为分隔符,对吗?那么有没有办法考虑,例如123456789.整个字符串和正则表达式将与该示例不匹配?
谢谢 !
我有一个字符串列表,需要使用它们从它们构建正则表达式Regexp#union.我需要生成的模式不区分大小写.
该#union方法本身不接受选项/修饰符,因此我目前看到两个选项:
strings = %w|one two three|
Regexp.new(Regexp.union(strings).to_s, true)
Run Code Online (Sandbox Code Playgroud)
和/或:
Regexp.union(*strings.map { |s| /#{s}/i })
Run Code Online (Sandbox Code Playgroud)
两种变体看起来都有些奇怪.
是否有能力使用Regexp.union?构造不区分大小写的正则表达式?
我有这种模式:
(\w+)(sin|in|pak|red)$
Run Code Online (Sandbox Code Playgroud)
替换模式是这样的:
$1tak
Run Code Online (Sandbox Code Playgroud)
问题是这个词:
setesin
将转变为:
setestak
代替
setetak
出于某种原因,in始终优先sin于模式.
如何强制执行该模式以遵循该顺序?
该Web项目将静态内容放入一些/ content / img文件夹中。网址规则是:/ img / {some md5}但在文件夹中的位置:/ content / img / {前两位数字} /
例
url: example.com/img/fe5afe0482195afff9390692a6cc23e1
location: /www/myproject/content/img/fe/fe5afe0482195afff9390692a6cc23e1
Run Code Online (Sandbox Code Playgroud)
此nginx位置是正确的,但不安全(符号点在regexp中不好):
location ~ /img/(..)(.+)$ {
alias $project_home/content/img/$1/$1$2;
add_header Content-Type image/jpg;
}
Run Code Online (Sandbox Code Playgroud)
下一个位置更正确,但不起作用:
location ~ /img/([0-9a-f]\{2\})([0-9a-f]+)$ {
alias $project_home/content/img/$1/$1$2;
add_header Content-Type image/jpg;
}
Run Code Online (Sandbox Code Playgroud)
帮助我查找错误以获取更正确的Nginx位置。
我有以下正则表达式:
[^0-9+-]|(?<=.)[+-]
Run Code Online (Sandbox Code Playgroud)
这个正则表达式匹配一个非数字并且不是+和/-或前面有一些东西。但是,JavaScript 正则表达式不支持正向后视。我怎样才能让它工作?+-
最后,我想替换
我目前在Regex101上的所有\t包含的内容,尝试对我的正则表达式进行各种迭代......这是我迄今为止最接近的......"
originString = blah\t\"blah\tblah\"\t\"blah\"\tblah\tblah\t\"blah\tblah\t\tblah\t\"\t\"\tbleh\"
regex = \t?+\"{1}[^"]?+([\t])?+[^"]?+\"
\t?+ maybe one or more tab
\"{1} a double quote
[^"]?+ anything but a double quote
([\t])?+ capture all the tabs
[^"]?+ anything but a double quote
\"{1} a double quote
Run Code Online (Sandbox Code Playgroud)
我的逻辑有问题!我需要您帮助对制表符进行分组。