regex find content question

后端 未结 3 1352
我寻月下人不归
我寻月下人不归 2020-12-04 02:16

Trying to use regex refind tag to find the content within the brackets in this example using coldfusion

 joe smith 
3条回答
  •  眼角桃花
    2020-12-04 02:28

    I've never been happy with the regular expression matching functions in CF. Hence, I wrote my own:

    
        function reFindNoSuck(string pattern, string data, numeric startPos = 1){
            var sucky = refindNoCase(pattern, data, startPos, true);
            var i = 0;
            var awesome = [];
    
            if (not isArray(sucky.len) or arrayLen(sucky.len) eq 0){return [];} //handle no match at all
            for(i=1; i<= arrayLen(sucky.len); i++){
                //if there's a match with pos 0 & length 0, that means the mime type was not specified
                if (sucky.len[i] gt 0 && sucky.pos[i] gt 0){
                    //don't include the group that matches the entire pattern
                    var matchBody = mid( data, sucky.pos[i], sucky.len[i]);
                    if (matchBody neq arguments.data){
                        arrayAppend( awesome, matchBody );
                    }
                }
            }
            return awesome;
        }
    
    

    Applied to your problem, here is my example:

    
    
    
    

    Dumping the "matches" variable shows that it is an array with 2 items. The first will be (because it matches the entire regex) and the second will be joesmith@domain.com (because it matches the 1st group defined in the regular expression -- all subsequent groups would also be captured and included in the array).

提交回复
热议问题