我有以下正则表达式
(OUT|IN) (?P<typ>\D+?)(?=.*\bd:(?P<dest>\d+)\b)(?=.*\bs:(?P<src>\d+)\b)
这允许我匹配以下字符串格式或其变体,并将 s:和 d:术语后面的数字放入 src <组中/ em>和 dest :
OUT MYTYPE s:12 d:3
我想编辑我的正则表达式,因此如果这些术语中的一个或多个不存在,它仍将匹配。即。
OUT MYTYPE s:12
仍然会匹配,而 src 组仍然会包含12,那就不会是 dest 组。
我尝试将?放在单词边界的末尾,但它会出现错误:
(?=.*\bs:(?P<src>\d+)\b)?
测试HERE
- - - - 修改 -----
此问题的早期版本包括组内的数字。正如@Ashish_Ranjan正确指出的那样,这需要 [^ \ d \ s] + 而不是 \ D +
答案 0 :(得分:1)