标签: lookahead

具有反向引用的正则表达式正向前瞻

我正在尝试使用语法高亮构建一个非常具体的编辑器.我用简单的正则表达式制作了所有简单的东西,但是现在我想用正则表达式添加一些高级功能.

在这种情况下,我想知道是否在任何JumpTo命令上使用了已定义的标记.
例:

Define1,Command,Command
Define2,Command,Command,JumpTo4
Define3,Command,Command,JumpTo1
Define4,Command,Command
Run Code Online (Sandbox Code Playgroud)

这里的目标是要找到每一个定义(Definexxx)由一个引用JumpTo(一个或多个)可以说,它是前或后定义.在另一步骤我也想找到任何定义不是由任何引用JumpTo.

我已经尝试过表达" 定义(?<tag>\d +)(?= JumpTo\k <tag>) "以获得积极的前瞻.我希望它会找到" Define1 ",但它没有(无论是否有多行选项).

这可能是一步完成Regex,还是我应该放弃这个想法,只考虑两步法?

.net c# regex lookahead lookbehind

2
推荐指数
1
解决办法
1335
查看次数

python re.split超前模式

我正在尝试re.split从日志文件中获取BCF#,BTS#和LAC,CI,其中包含标题和常规结构:

==================================================================================
RADIO NETWORK CONFIGURATION IN BSC:
                                                         E P  B
                                      F                  T R  C D-CHANNEL  BUSY
                      AD OP           R  ET- BCCH/CBCH/  R E  S O&M LINK  HR  FR
 LAC   CI         HOP ST STATE  FREQ  T  PCM ERACH       X F  U NAME  ST
                                                                         /GP
===================== == ====== ==== == ==== =========== = = == ===== == === ===

BCF-0010  FLEXI MULTI  U WO                                   2 LM10  WO
10090 31335 BTS-0010  U WO                                                0   0
 KHAKHAATT070D    BB/- 
                                                                               7
              TRX-001  U WO      779  0 …
Run Code Online (Sandbox Code Playgroud)

python regex parsing lookahead

2
推荐指数
1
解决办法
1108
查看次数

InputStreamReader.markSupported为false

我需要从一个"取消读取"字符InputStreamReader.为此目的,我想用markreset,但markSupported返回falseInputStreamReader类,因为它没有保持字符的内部缓冲和/或队列.

我知道BufferedInputStreamPushbackInputStream,但由于它们缓冲字节的基础上,同时也不是适当的在这里我需要的字符.

Java是否提供可以解读字符的缓冲字符阅读器?实际上,让我进一步限制,我只需要取消读取单个字符(用于超前目的).我真的需要保持自己的前瞻性吗?

java inputstream lookahead ungetc

1
推荐指数
1
解决办法
1512
查看次数

复杂(?)正则表达式:是表达式,而不是另一种表达式

(如果你能做出更好的头衔,请做)

嗨,

我需要确保字符串匹配以下正则表达式:

^[0-9a-zA-Z]{1}[0-9a-zA-Z\.\-_]*$
(Starts with a letter or number, then any number of letters, numbers, dots, dashes or underscores)
Run Code Online (Sandbox Code Playgroud)

但鉴于此,我需要确保它与Guid不匹配,我的Guid匹配reg-ex看起来像这样(显然,这需要在合并结果中否定):

^([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}$
Run Code Online (Sandbox Code Playgroud)

这里的最后一个要求是它们必须(如果可能的话)合并为单个表达式.

regex lookahead negative-lookahead regex-negation

1
推荐指数
1
解决办法
141
查看次数

正则表达式在字符串上查找最后一个标记

我想知道是否有办法解决这个问题

var string = "foo::bar"
Run Code Online (Sandbox Code Playgroud)

获取字符串的最后一部分:"bar"使用正则表达式.

我试图做好预测,但却无法掌握它们做到这一点.

-

UPDATE

也许一些例子会使问题更加清晰.

var st1 = "foo::bar::0"
match should be 0

var st2 = "foo::bar::0-3aab"
match should be 0-3aab

var st3 = "foo"
no match should be found
Run Code Online (Sandbox Code Playgroud)

javascript regex lookahead

1
推荐指数
1
解决办法
3433
查看次数

使用replaceAll和regex预先添加字符串

我无法弄清楚如何使用正向前瞻创建正则表达式.我们的想法是在长字符串中为每两个字符添加两个字符串.即

"090909" => "XX09XX09XX09"
Run Code Online (Sandbox Code Playgroud)

这段代码:

String s = "090909";
String ns = s.replaceAll("(?=\\d\\d)", "XX");  
Run Code Online (Sandbox Code Playgroud)

......不起作用; 输出是XX0XX9XX0XX9XX09.但是这段代码有效:

String s = "090909";
String ns = s.replaceAll("(?=09)", "XX");  
Run Code Online (Sandbox Code Playgroud)

我很困惑如何为每两个字符提出一个表达前瞻性的表达方式.我错过了一些界限吗?

java regex lookahead

1
推荐指数
1
解决办法
950
查看次数

正则表达式删除整数周围的引号?

假设我有一个字符串"\"Bob \",\"1 \",\"Mary \",\"2 \"".是否可以只删除数字周围的引号而不是字母?我已经尝试了前瞻/后退,但是后视的非可变长度搞砸了我,我不知道如何解决问题.谢谢.

regex lookahead lookbehind

1
推荐指数
1
解决办法
1721
查看次数

python regex:匹配一个被2个字符包围的字符

我需要一个python中的正则表达式,匹配任何被2个下划线包围的字符.含义,含义

__a__ 
Run Code Online (Sandbox Code Playgroud)

将匹配"a",但是

___a___ 
Run Code Online (Sandbox Code Playgroud)

不会匹配.它需要支持重叠匹配,这样

__a__d___b___e__c__ 
Run Code Online (Sandbox Code Playgroud)

将返回"ac",因为a被双下划线包围,但d,e在它们旁边有一个三重奏,而b在两侧都有三重下划线.我现在有什么

(?<=[_]{2})(.)(?=[_]{2})
Run Code Online (Sandbox Code Playgroud)

它解决了重叠,但不是上面例子中的"确切2"它返回"adbec"

python regex lookahead lookbehind

1
推荐指数
1
解决办法
255
查看次数

正则表达式先行匹配以缩进文本为基础

如果下面的缩进行中还有另一个已定义的文本(此处为“交换端口模式访问”),我想匹配以特定字符串(在此示例中为“ interface”)开头的行。

示例数据:

interface GigabitEthernet1/0/1
 description abc
 bla
 switchport mode access
 xyz
 abc
interface GigabitEthernet1/0/2
interface GigabitEthernet1/0/3
 xyz
 abc
interface GigabitEthernet1/0/4
 description Test
 switchport mode access
 xyz
 abc
interface GigabitEthernet1/0/5
 description
Run Code Online (Sandbox Code Playgroud)

应该匹配:

interface GigabitEthernet1/0/1
interface GigabitEthernet1/0/4
Run Code Online (Sandbox Code Playgroud)

我试过了:

interface GigabitEthernet1\/0\/[0-9](?=(\n|.)*switchport mode access)
Run Code Online (Sandbox Code Playgroud)

但这会检查接口下的所有行,因此它确实匹配:

interface GigabitEthernet1/0/1
interface GigabitEthernet1/0/2
interface GigabitEthernet1/0/3
interface GigabitEthernet1/0/4
Run Code Online (Sandbox Code Playgroud)

如何使前行仅在行不以空格开头之前起作用?

regex lookahead

1
推荐指数
1
解决办法
35
查看次数

寻找正则表达式模式以捕获短语直到点

我有一长串这样的文字:

text = 'Quisiera yo detectar los puntos... pero solo los puntos aislados. Los puntos suspensivos no los quiero detectar. A eso me refiero.'
Run Code Online (Sandbox Code Playgroud)

我想得到这个输出:

phrases = ['Quisiera yo detectar los puntos... pero solo los puntos aislados.',
' Los puntos suspensivos no los quiero detectar.',
' A eso me refiero.']
Run Code Online (Sandbox Code Playgroud)

问题是第一个短语中的三个点。我找不到将它们与常见的单点分隔符区分开的正则表达式。有没有办法用正则表达式来实现?

python regex lookahead

1
推荐指数
1
解决办法
50
查看次数

理解积极向前看断言

从Python 3.4.1文档:

(?= ...)

积极前瞻断言.如果包含的正则表达式(此处由...表示)在当前位置成功匹配,则成功,否则失败.但是,一旦尝试了包含的表达式,匹配的引擎就不会前进 ; 在断言开始的地方尝试了模式的其余部分.

我试图理解Python中的正则表达式.你能帮我理解第二句话,特别是粗体字吗?任何例子将不胜感激.

python regex lookahead

0
推荐指数
1
解决办法
1132
查看次数

用于Web提取的正则表达式.积极的前瞻问题

下面是我正在使用的一些数据的示例.我已经阅读了一些涉及此主题的帖子,以及在regex101上尝试了一段时间.

BotInfo[-]: Source IP:[10.1.1.100] Target Host:[CentOS70-1] Target OS:[CentOS
7.0] Description:[HTTP Connection Request] Details:[10.1.1.101 - - [28/May
/2013:12:24:08 +0000] "GET /math/html.mli HTTP/1.0" 404 3567 "-" "-" ] Phase:
[Access] Service:[WEB]
Run Code Online (Sandbox Code Playgroud)

目标是拥有两个捕获组.一个用于标记(例如,源IP,目标主机,描述等),另一个用于最外面的方括号中包含的内容.

它是"最外层"的东西,因为Details标签的内容中有方括号.

这是我目前在所述正则表达式上取得的进展.我正在使用/ g标志:

\s?([^:]+):\[(.*?(?=\]\s.*?:\[))\]
Run Code Online (Sandbox Code Playgroud)

除了边缘情况之外,它处理所有事情(它比需要的更复杂,因为我一直在努力让边缘情况起作用).

我当前的lookahead(\]\s.*?:\[),在高级别,是匹配最后左括号,然后匹配下一个标签.另一个问题是,在最后一场比赛中失败,因为没有以下标签.


编辑:请求成功输出的示例.使用提供的数据,目标是有两个捕获组产生这些对:

MATCH 1
1.  `Source IP`
2.  `10.1.1.100`
MATCH 2
1.  `Target Host`
2.  `CentOS70-1`
MATCH 3
1.  `Target OS`
2.  `CentOS 7.0`
MATCH 4
1.  `Description`
2.  `HTTP Connection Request`
MATCH 5
1.  `Details`
2.  `10.1.1.101 - - [28/May/2013:12:24:08 +0000] "GET …
Run Code Online (Sandbox Code Playgroud)

regex lookahead

0
推荐指数
1
解决办法
47
查看次数

如何将html标记与perl正则表达式匹配?

鉴于下面的代码,我想匹配第一次form出现.我发现负面前瞻?!可能用于实现这一目标,但它不起作用.我的正则表达式有什么问题?

#test
$test = "<form abc> foo </form> <form gg> bar </form>";
$test =~ m/<form[^>]*abc[^>]*>(?!.*form>.*)form>/s;
print $&;
Run Code Online (Sandbox Code Playgroud)

regex perl match lookahead

-2
推荐指数
1
解决办法
4116
查看次数