실패로 즉시 중단하려면 잘못된 입력을 검색하는 것이 어떨까요? 귀하의 기준에 부합하지 않은 항목에 대해 다음 검색 (개 이상의 문자를 비 X/Y/Z, 널 (null)) : 잘못된 입력을 잡는
"(|[\w\s]{4,}|[\w]{0,2}[^xyz][\w]{0,2})"
몇 가지 예 :
$ grep -P '"(|[\w\s]{4,}|[\w]{0,2}[^xyz][\w]{0,2})"' user_input.txt
"xya", "yyy", "zzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
"xxxx", "yyy", "zzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
"xxx", "yag", "zzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
"xxx", "yyy", "zzo", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
"(", "yxy", "yzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
"", "yxy", "yzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
일치하지 않는 것을 보는 예 (좋은 입력) :
$ grep -vP '"(|[\w\s]{4,}|[\w]{0,2}[^xyz][\w]{0,2})"' user_input.txt
"xxx", "yyy", "zzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
"x", "yxy", "yzz", 'x', new ItemStack(Item.stick, 1, 0) , 'y', new ItemStack(Item.stick, 1, 0) , 'z', new ItemStack(Block.stone, 1, 0)
다음과 같이 나타났습니다 : [xyz] + {1, 3} | [xyz] + \ s {1,2}) [ "] – Jh62
당신은 결국 정규식을 무엇으로 사용할 것입니까? (언어 또는 환경) 일부는 모든 일치 항목이 인접 해 있는지 확인하는'\ G' 앵커를 제공합니다. –
Java. 이미 프로그램이 있지만, 사용자가 잘못된 입력을하지 못하게하려면이 정규식이 필요합니다. – Jh62