簡體   English   中英

正則表達式以匹配包含某些字符串(除了某些字符串)的模式

[英]Regular Expression to match a pattern that contain some string except some string

我有如下字符串:

var string = "'abc'+@VAL([Q].[F1 w1 w1 w1])+ 'hellllllllllo'+@VAL([Q].[F2 w]) +'anything'+@VAL([Q].[F3 w])+anything";

我想匹配以下模式

@VAL([Q].[F1 w1 w1 w1])
@VAL([Q].[F2 w]) 
@VAL([Q].[F3 w])

其實我想匹配@VAL字符串模式開始和結束),我曾嘗試用下面的代碼:

   var patt1 = /@VAL\((.*)\)/g;

   var myPattern = string.match(patt1);

並得到以下結果

@VAL([Q].[F1 w1 w1 w1])+ 'hellllllllllo'+@VAL([Q].[F2 w]) +'anything'+@VAL([Q].[F3 w])

我無法解決需要幫助!

這將返回所有匹配項:

result = subject.match(/@VAL\([^)]*\)/g);

參見演示

  • @VAL\\(匹配@VAL(
  • [^)]匹配一個不是)字符...
  • *量詞重復零次或多次
  • *\\)匹配右括號

您的正則表達式過於貪婪,請使用以下基於否定的正則表達式:

var patt1 = /@VAL\(([^)]*)\)/g;

或者只是變得懶惰:

var patt1 = /@VAL\((.*?)\)/g;


var m = string.match(patt1);
//=> ["@VAL([Q].[F1 w1 w1 w1])", "@VAL([Q].[F2 w])", "@VAL([Q].[F3 w])"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM