https://regex101.com/r/sB9wW6/1
<--正向后视中的问题
像这样工作在
:
,但我需要一个正确的起始索引(不带空格)。
下面是JS中的代码:
var regex = new RegExp(/(?:(?<=\s)|^)@(\S+)/g);
分析正则表达式时出错:无效的正则表达式: /(?:(?<=\s)|^)@(\S+)/
我做错了什么?
更新
好的,在JS中没有后视:(
但不管怎样,我需要一个正则表达式来获得正确的比赛开始和结束索引。没有前导空格。
发布于 2016-09-22 18:10:22
确保您始终在regex101.com上选择正确的regex引擎
..。查看由于使用
仅JS兼容的正则表达式
Python中的构造
..。
JS regex -
在回答这个问题时
-不支持lookbehinds。现在,它变得越来越被采用,因为
它在ECMAScript 2018中的引入
..。您在这里并不真正需要它,因为您可以使用捕获组:
var re = /(?:\s|^)@(\S+)/g;
var str = 's @vln1\n@vln2\n';
var res = [];
while ((m = re.exec(str)) !== null) {
res.push(m[1]);
}
console.log(res);
The The The
将空格或字符串开头与
,然后匹配
,然后匹配和
捕获
将一个或多个非空格字符添加到组1中
..。
要获取开始/结束索引,请使用
var re = /(\s|^)@\S+/g;
var str = 's @vln1\n@vln2\n';
var pos = [];
while ((m = re.exec(str)) !== null) {
pos.push([m.index+m[1].length, m.index+m[0].length]);
}
console.log(pos);
奖金
我的regex在regex101.com上工作,但不在...
首先
,你有没有检查过
代码生成器
中的链接
工具
窗格在左边?
-确保针对代码中使用的相同文本进行测试,
文字字符串
,在regex测试程序中。一种常见的场景是复制/粘贴
字符串文字
值直接输入到测试字符串字段中,并使用所有字符串转义序列,如
(换行符),
(回车),
(制表符)。请参见
正则表达式
_
搜索c++
,例如。请记住,它们必须替换为它们的文字对应项。所以,如果你在Python中有
,则必须使用
,两个换行符,
在regex测试程序文本字段中。
永远不会与之匹敌
尽管你
可能会认为它“有效”
..。是的,
并不总是与换行符匹配,请参见
如何匹配正则表达式中跨多行的任何字符?
-确保在您的
字符串文字
,在大多数语言中,在
常规字符串文字
,使用双反斜杠,即
在regex101.com上使用,必须写成
..。在
原始字符串文字
,使用单个反斜杠,与regex101相同。转义
词边界
是非常重要的,因为在许多语言中(
C#
Python
Java
JavaScript
红宝石
等),
用于定义退格符,即它是有效的
字符串转义序列
..。PHP不支持
字符串转义序列,因此
=
好了。
-请注意,默认情况下
和
在regex101.com中启用了标志。因此,如果您使用
和
,它们将相应地在行的开始和结束处匹配。如果您需要在代码中使用相同的行为,请检查多行模式是如何实现的,并使用特定的标志,或者-如果支持的话-使用内联
嵌入(内联)修饰符。The The The
标志支持多次匹配,通常使用特定的函数/方法来实现。检查您的语言参考以找到合适的语言参考。
换行符
-
行尾
在regex101.com are LF only,您不能测试以CRLF结尾的字符串,请参见
regex101.com与myserver -不同的结果
..。对于每个正则表达式库,解决方案可以是不同的:
(PCRE、Java、Ruby)或某种
(Boost,PCRE),
/
(适用于.NET)或
在其他库中(请参阅
C#
PHP
)。
与测试多行字符串(而不是独立字符串/行的列表)的正则表达式相关的另一个问题是,您的模式可能会消耗行尾,
,char with negated类,请参见
像这样的问题
..。
匹配行字符的结尾,为了避免它,
可以使用,或者其他替代方案。
php
您正在处理Unicode字符串,或者希望速记字符类也与Unicode字符匹配(例如
匹配
或者
,或者
匹配硬空格),则需要使用
修饰符
,请参阅
普雷格
_
match()返回0,尽管regex测试程序可以工作
要匹配所有匹配项,请使用
,not
使用
,请参阅
PHP preg
_
匹配以查找多个匹配项
和
“中的未知修饰符'g‘...”使用preg时
_
在PHP中匹配?
带有内联反向引用的正则表达式,如下所示
拒绝工作?您使用的是双引号字符串文字吗?使用单引号,请参阅
反向引用在PHP中不起作用
php
幼体
注意,您需要在模式周围使用正则表达式分隔符,请参见
https://stackoverflow.com/questions/22430529
python
你用过
,它只搜索字符串开头的匹配项,使用
:
正则表达式在Pythex上工作得很好,但在Python中就不行了
如果正则表达式包含捕获组,
返回捕获/捕获元组的列表。使用非捕获组,或者
,或删除多余的捕获组,请参阅
re.findall的行为很奇怪
如果您使用
在模式中表示一行的开始,而不是整个字符串的开始,或使用
若要表示行尾而不是字符串,请传递
或者
标志为
方法,请参见
使用^匹配Python regex中的行首
如果您尝试在多行中匹配一些文本,并使用
或者
,或者
/
,但仍然不起作用,请检查您是否逐行阅读该文件,例如,使用
..。必须将整个文件内容作为输入传递给regex方法,请参见
在新行中获取两个字符之间的所有内容
..。
c#
.net
.NET正则表达式不支持
所有格量词
喜欢
,请参阅
带有所有格量化的可选文本之间的.NET正则表达式匹配数字不起作用
当您匹配多行字符串并使用
选项(或内联
修饰符),并使用
在要匹配的模式中锚定
整行
,并且在代码中没有匹配,则需要添加
之前
,请参阅
将$与字符串末尾而不是行尾匹配的.Net正则表达式,即使在启用了多行的情况下也是如此
要获得
多个匹配
,使用
,not
,请参阅
RegEx在字符串中多次匹配
与上面类似的情况:通过双行换行序列将字符串拆分为段落-
C# /正则表达式模式在在线测试中有效,但在运行时不起作用
您应该删除正则表达式分隔符,即
实际上必须看起来像
,请参阅
简单且经过测试的包含正则表达式分隔符的在线正则表达式在C#代码中不起作用
如果您不必要地使用
转义正则表达式中的所有字符(如
)您需要删除
,请参阅
正则表达式在正则表达式测试器中工作,但在c#中不起作用
dart
颤动
使用原始字符串文字,
,或双反斜杠(
)-
https://stackoverflow.com/questions/59085824
javascript
中的双转义反斜杠
:
为什么正则表达式构造函数需要双重转义?
(负面)大多数浏览器不支持的外观:
正则表达式可以在浏览器上运行,但不能在Node.js中运行
字符串是不可变的,则将
结果转换为var -
.replace()方法不会就地更改字符串
检索
全部
匹配
-
Regex101和Js正则表达式搜索显示不同的结果
或者,使用
使用RegExp.exec从字符串中提取所有匹配项的RegEx
替换
全部
字符串中的模式匹配:
为什么使用替换时javascript只替换第一个实例?
javascript
角度
如果使用字符串文字定义正则表达式,或仅使用正则表达式文字表示法,请使用双反斜杠,请参见
https://stackoverflow.com/questions/56097782
java
单词边界不工作?确保使用双反斜杠,
,请参阅
正则表达式\b字边界不起作用
获取
例外?同样的,双反斜杠-
Java不能与regex \s一起工作,表示:无效的转义序列
困扰着你吗?运行
/
-
为什么我的正则表达式可以在RegexPlanet和regex101上工作,但不能在我的代码中工作?
需要完整的字符串匹配,请使用
:
Java Regex模式,在任何在线测试程序中都匹配,但在Eclipse中不匹配
访问组使用
:
正则表达式在Java中不工作,而在其他情况下工作
在character类中,两者都
和
必须转义-
在Java regex中的字符类中使用方括号
你不应该跑
和
连续地,仅使用
若要检查模式是否与整个字符串匹配,然后执行相应操作,或使用
检查是否只有一个匹配项,或者
查找多个匹配项(或
)。请参见
为什么我的正则表达式可以在RegexPlanet和regex101上工作,但不能在我的代码中工作?
kotlin
你有
什么?去掉外部斜杠,它们是
正则表达式分隔符字符
不是模式的一部分。请参见
正则表达式在代码中不匹配,但正则表达式很好
您期望的是部分字符串匹配,但是
是否需要完整的字符串匹配?使用
,请参阅
正则表达式在Kotlin中不匹配
mongodb
请不要随身携带
使用单引号/双引号,请参见
mongodb正则表达式不起作用
c++
需要完整的字符串匹配,请使用
为了找到部分匹配-
正则表达式与C++正则表达式不能像预期的那样工作
_
匹配
仅查找第一个匹配项。使用
或者
要获取所有匹配项:请参见
std::match是什么
_
结果::大小返回?
读取用户定义的字符串时,请使用
,请注意
将只读到第一个空格,要正确读取整行,请使用
-
匹配'+‘限定符的C++正则表达式
不起作用,则需要使用
或者
(
原始字符串文字
)-
此正则表达式在c++中不起作用
确保针对文字文本而不是字符串文字测试正则表达式,请参见
正则表达式
_
搜索c++
开始
双反斜杠或使用原始字符串文字:
正则表达式在Go中不起作用
Go正则表达式不支持环视,请选择正确的选项(
),在测试之前,请访问regex101.com!
正则表达式求反集合不工作golang
groovy
返回所有匹配项:
在regex101上工作的正则表达式在Groovy上不能工作
R
字符串文字中的双转义反斜杠:
grep中的"'\w‘是无法识别的转义“
使用
至PCRE引擎(
/
):
为什么这个使用lookbehinds的正则表达式在R中是无效的?
oracle
所有量词的贪婪程度由正则表达式中的第一个量词设置,请参见
Regex101 vs Oracle Regex
(然后,您需要使所有量词都像第一个量词一样贪婪)
firebase
双转义反斜杠,确保
仅出现在模式的开头,并且
仅位于末尾(如果有),请注意您不能使用超过9个内联反向引用:
Firebase规则Regex生日
firebase
google-cloud-firestore
在Firestore安全规则中,正则表达式需要作为字符串传递,这也意味着它不应该包装在
符号,即使用
...请参见
https://stackoverflow.com/questions/63243300
google-data-studio
在
必须不包含
正则表达式分隔符和标志(如
)-请参阅
如何使用Regex替换Google Data Studio中日期字段中的方括号?
google-sheets
如果你认为
不返回完全匹配,则截断结果,您应该检查正则表达式中是否有多余的捕获组并将其删除,或者通过添加将捕获组转换为非捕获组
开业后
,请参阅
在Google表格中提取url域名根
sed
为什么我的正则表达式在X中起作用,但在Y中不起作用?
词边界
pcre
php
和
不能在正则表达式测试器中工作,尽管它们是PCRE中的有效构造,请参见
https://stackoverflow.com/questions/48670105
https://stackoverflow.com/questions/39636124
复制相似问题