问题标签 [lookbehind]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 正则表达式:向后看以避免奇数个连续反斜杠
我有用户输入,其中方括号内允许使用一些标签。我已经编写了正则表达式模式来查找和验证括号内的内容。
在用户输入字段中,左括号([)可以用反斜杠转义,反斜杠也可以用另一个反斜杠(\)转义。我需要后视子模式以避免在打开括号之前出现奇数个连续反斜杠。
目前我必须处理这样的事情:
它工作正常,但问题是这段代码仍然匹配括号前面可能的连续反斜杠对(即使它们是隐藏的),并且向后看只是检查是否有另一个单个反斜杠附加到对(或直接到左括号) . 如果可能的话,我需要在后视组中避免它们。
例子:
我使用 PHP PCRE
php - PHP 正则表达式:几个带有正面后视的停止字符
嗨 stackoverflow 社区!
我正在尝试在 PHP 中使用基于Positive lookbehind的简单正则表达式。我的目标是提取 URL 中域名和一组特定字符(?或 & 或 /)之间的所有内容。我想在这些例子中提取“bar”:
foo.com/bar?
foo.com/bar&
foo.com/bar/
我试过
它在平台测试中运行良好, 但不适用于 PHP 5.3x preg_match :抛出的错误是我不能使用多个停止字符 - 它适用于一个。
我还尝试了积极的后视/前瞻组合,但问题仍然存在。我做错什么了 ?
regex - 正则表达式实现是否真的需要一个 split() 函数?
是否有任何单个(或等)操作split()
无法执行的正则表达式操作应用程序?match()
search()
findall()
例如,而不是做
你可以通过调用来获得相同的结果
并且在几乎所有正则表达式引擎(.NET 和 JGSoft 除外)中,split()
不能做一些事情,比如“|
除非它们被转义,否则拆分\|
”,因为你需要在后视中无限重复。
因此,不必像这样做一些非常难以理解的事情(嵌套的lookbehinds!)
你可以简单地做(即使在不支持任何后视的 JavaScript 中)
这让我想知道:有什么我可以做的事情是split()
用单个match()
/无法实现的findall()
吗?我敢打赌没有,但我可能忽略了一些东西。
(我在现代、非常规的意义上定义“正则表达式”,即使用现代正则表达式拥有的一切,如反向引用和环视。)
python - 与某些扩展不匹配的正则表达式模式?
我写了这个模式
但是有一个问题 - 此模式匹配 file.name.jpg(2 点)
它在 filename.jpg 上正常工作(不匹配)。我试图弄清楚如何使它不匹配任何 .jpg 文件,即使文件名中有 2 个或更多点。我尝试使用向后看,但 python 抱怨没有使用固定宽度(我不确定这意味着什么,但文件名将是可变长度。)
regex - Perl Regex:如何从 CSV 行中删除引号内的引号
我有一个 CSV 文件中的一行,其中包含字段分隔符"
和,
字段分隔符作为字符串。有时"
,数据中存在破坏字段封闭符的数据。我正在寻找一个正则表达式来删除这些"
.
我的字符串如下所示:
我看过这个,但我不明白如何告诉它只删除引号
- 不在字符串的开头
- 不在字符串的末尾
- 前面没有
,
- 后面没有
,
我设法用这行代码告诉它同时删除 3 和 4 :
但是,我无法将^
and$
放在那里,因为前瞻和后瞻都不喜欢写成(?<!(^|,))
.
除了拆分字符串并从每个元素中删除引号之外,有没有办法仅使用正则表达式来实现这一点?
python - python regex:匹配一个被正好2个字符包围的字符
我需要一个 python 中的正则表达式,它匹配被正好 2 个下划线包围的任何字符。意思,意思
将匹配“a”,但
不会匹配。它需要支持重叠匹配,这样
将返回“ac”,因为 a 被双下划线包围,但 d,e 旁边有一个三重下划线,b 两边都有一个三重下划线。我现在拥有的
它解决了重叠,但不是上面示例中的“恰好 2”,它返回“adbec”
c# - 匹配字符串与正则表达式,只要它没有被括号包围
我正在寻找匹配字符串“Order By XXX”,其中 XXX 可以是任何字母、数字、句点、逗号、空格或方括号。但是,如果它没有被括号包围,我只想匹配它(一侧的括号是可以的,只要它不在两侧)。所以它应该匹配“”中的斜体部分,因为它不应该匹配任何东西
应该匹配(斜体匹配部分):
- 从 Y顺序按 z选择 X
- Select y = (select top 1 Z from C Order by [ID] desc )
不应该匹配:
- 从 Y 中选择 X(按 z 排序)
- Select aa, NTILE(4) OVER (Order by ab) group by ac
我有用于按文本匹配订单的正则表达式字符串:[ ]*order by [\w,.\[\] ]+
。但是,我在正确地进行前瞻/落后工作时遇到了一些麻烦。关于如何进行的任何建议?
c# - 需要固定长度的正则表达式吗?
我有这个使用向前和向后预测的正则表达式:
我正在尝试将它从 C# 移植到 Python,但不断收到错误消息
是否可以在不失去意义的情况下用 Python 重写它?
这个想法是让它匹配类似的东西
更新
我正在使用环视来解析我修改过的 HTTP 多部分文本
我只想在进行拆分时获取文件路径和其他文本,而不必删除开始和结束标签
<!inc(
代码简洁很重要,但如果它使正则表达式可行,我愿意更改格式。
javascript - Javascript Regex - 假装后视的意外行为
我正在尝试编写一个小部件来整理来自多个来源的推文作为练习(类似的东西存在这里,但是a)那里提供的列表选项没有加载我的任何列表,并且b)这是一个有用的学习练习!)。作为其中的一部分,我想编写一个正则表达式,用指向用户 Twitter 页面的链接替换 Twitter 句柄('@' 后跟字符)。但是,我不希望出现误报,例如,推文中的电子邮件地址。
因此,例如,替换应该发送
到
在这个问题的指导下,这表明我需要某种方式在 Javascript 中复制负面的后视,我编写了以下代码:
但是,在触发三元运算符的最后部分的情况下,$0 包含“@”符号。这出乎我的意料——因为 '@' 没有括在括号中,我希望 $0 匹配 '([^\s,.;:]*)' - 即 Twitter 用户的用户名(之后,和没有,'@')。我可以通过使用 $0.substring(1) 获得所需的功能,但我想进一步了解。
有人可以指出我误解了什么吗?我对正则表达式很陌生,从来没有用 Javascript 编写过它们,也没有使用过负面的后视。
c# - 如何删除字符串C#之间的一些文本
我有这样的文字:
LINE\r\n 5\r\n11DA3\r\n330\r\n2\r\n100 \r\nAcDbEntity\r\n 8\r\n0-FD\r\n 6\r\nHIDDEN\r\n100
看一下粗体字。我想替换 5\r\n 和 \r\n100 之间的文本。我试过这段代码:
但它不起作用。我的代码有问题吗?我确定 (\S+?) 是问题所在。有什么办法解决吗?