首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >正则表达式匹配字符,但不在正则表达式内

正则表达式匹配字符,但不在正则表达式内
EN

Stack Overflow用户
提问于 2015-09-09 21:17:01
回答 2查看 73关注 0票数 0
代码语言:javascript
复制
STOPATDESK YES;
:: TXT "LCLLMT:29.4700";
:: TXT "LCLCURR;NON-USD";
:: TXT "CALLBK:3";
:: TXT "FFTRL:EUR-LIM;-TAP-5";

STOPATDESK YES; :: TXT "LCLLMT:29.4700"; :: TXT "LCLCURR;NON-USD"; :: TXT "CALLBK:3"; :: TXT "FFTRL:EUR-LIM;-TAP-5";

您能提供正则表达式,将匹配分号,但不在TXT "..."?

在StackOverflow上有几个有用的问题,但我未能为我的案例编写有效的解决方案

Regex for matching a character, but not when it's enclosed in square bracket

Regex for matching a character, but not when it's enclosed in quotes

EN

回答 2

Stack Overflow用户

发布于 2015-09-09 23:07:29

您需要一个匹配任何后面没有奇数个引号的分号的正则表达式。

代码语言:javascript
复制
;(?![^"]*(([^"]*"[^"]*"){2})*[^"]*"[^"]*$)

棘手的部分是找到negative lookahead (?![^"]*(([^"]*"[^"]*"){2})*[^"]*"[^"]*$)

匹配最后一个引号之前的任何文本

  • (([^"]*"[^"]*"){2})*匹配具有文本的任意偶数个引号inside

  • [^"]*"[^"]*$ match
  • [^"]* "

如果以上所有条件都匹配,则在;之后发现奇数个"。这意味着;在两个"中,因此它不是一个有效的;

正则表达式:https://regex101.com/r/dG6cC1/1

Java演示:https://ideone.com/OuAaA5

票数 2
EN

Stack Overflow用户

发布于 2015-09-10 00:51:08

您还可以尝试使用:

代码语言:javascript
复制
"[^"]*"|(;)

DEMO

它将匹配引号或分隔分号,然后使用group(1)获得分隔的分号。然而,不平衡的引用歌声会引起一个问题。或者,如果整个文件的格式如您的示例所示(引号中的分号前后各有一个字符,而不是空格),您可以尝试使用:

代码语言:javascript
复制
;(?=\s|$)

DEMO

它在上面的例子中起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32480648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档