正则表达式如何检查这种模式

时间:2018-06-28 08:45:47

标签: regex unix sh

我会尽力解释得更好。我也检查了评论,但仍然没有运气。

grep部分返回true,因为正则表达式似乎没问题。但是sed并不能取代

这是脚本:

final int size = data.size();
int index = 0;

while (!lowerBound.isAfter(upperBound)) {
    // find inserting index
    while (index < size && data.get(index).getLocalTime().isBefore(lowerBound)) {
        index++;
    }
    // insert, if not already in list
    if (index >= size || !data.get(index).getLocalTime().equals(lowerBound)) {
        data.add(new DataClass(lowerBound, "Inserted"));
    } else {
        index++;
    }
    lowerBound = lowerBound.plusHours(1);
}

// merge
DataClass[] merged = new DataClass[data.size()];
int insertionIndex = 0;
int index1 = 0;
int index2 = size;
while (index1 < size && index2 < merged.length) {
    DataClass v1 = data.get(index1);
    DataClass v2 = data.get(index2);
    if (v2.getLocalTime().isBefore(v1.getLocalTime())) {
        merged[insertionIndex] = v2;
        index2++;
    } else {
        merged[insertionIndex] = v1;
        index1++;
    }
    insertionIndex++;
}

// copy remaining
while (index1 < size) {
    merged[insertionIndex++] = data.get(index1++);
}
while (index2 < merged.length) {
    merged[insertionIndex++] = data.get(index2++);
}
data.setAll(merged);

2 个答案:

答案 0 :(得分:1)

此正则表达式将确保分号和空格是可选的,并且引号匹配(如果以单/双开头,则将在末尾匹配相应的引号):

/&VAR1\s*=\s*(['"])?1{4}\1;?/

答案 1 :(得分:0)

感谢@Aaron!我读了一点,我想我明白了:

/&VAR1\s*\=\s*\'VALUE\'\;/

@Tripleee谢谢。那在在线测试器中使用Javascript工作,我改用Unix并尝试了,但没有用。我将VALUE更改为搜索por1111。有帮助吗?

grep "\&VAR1\s*\=\s*'[1]{4}'\;"

编辑:完成后,[]和{}是扩展程序regexp,因此可以正常工作:

grep -E "\&VAR1\s*\=\s*'[1]{4}'\;"