我写了一个正则表达式:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Yl1osaB {
public static void main(String[] args) throws IOException {
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Ylesanne 1 RASMUS RIKKEN 25/11/2016");
while (true) {
// your code
if(tulemus < 0 || tulemus > 110) {
System.out.println("Tulemus is wrong, please try again!");
}
else {
break;
}
}
} // MAIN
}
将字符串分为街道类型和街道名称。一些街道有街道位置描述,我不想选择。
这是: https://regex101.com/r/j3gF5b/2
它有效,但街道名称中的每个最后一个符号都缺失。我想知道为什么会发生这种情况以及如何修复它?
答案 0 :(得分:2)
您的[^)]
只匹配1个不是)
的字符...这是您在街道名称中丢失的字母
你可以用这个:
^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)\s([^\)]+?)$
答案 1 :(得分:1)
原因是否定字符类仍然消耗匹配的子字符串。断言字符串/行的结束后,使用否定lookbehind (零宽度断言,非消费构造):
)
所有以^(проезд|пл|пр-кт|пер|наб|линия|км|б-р|аллея|кв-л)(?!.*\)$)\s*(.+)$
结尾的匹配都会失败。
请参阅regex demo
另一种方法是使用否定前瞻(如果正则表达式引擎不支持lookbehinds,如在JavaScript中):
#tableid// your table id
var $tr = $("#tableid").append('<tr>' +
$('<td>').text(item.NAME),
$('<td>').text(item.POST_URL),
$('<td>').text(item.POST_DATE)
+ '</tr>'
);
请参阅another demo
答案 2 :(得分:1)