大佬教程收集整理的这篇文章主要介绍了机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我在修复此正则表达式时遇到问题。
问题:假设机器人可以在四个方向(前进(F),后退(B),左(L),右(R))中的任何一个方向移动,然后是它可以移动的步数方向。它可以走的步数在 1 到 9 之间。
有效操作:F4L1B3、R5F2、B7、L8F2R4B3、L1、R5
无效操作:12、LR、L2J2、K3F5、R12、F6L7R12、B5R8L+、L4-R3
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class extra {
public static voID main(String[] args){
ScAnner scn = new ScAnner(system.in);
System.out.println("Enter the String: ");
String move = scn.nextline();
finalposition(movE);
}
static voID finalposition(String movE)
{
Pattern p = Pattern.compile("([F][1-9]+)|([B][1-9]+)|([L][1-9]+)|([R][1-9])") ;
Matcher m = p.matcher(movE);
Boolean b = m.matches();
if (b)
{
System.out.println("Robot is moving");
}else
System.out.println("InvalID input");
}
}
有 4 个有效的大写字符,并且所有 4 个字符后面都可以跟一个数字 1-9。这似乎只在 1 次或多次出现的序列中有效,不允许任何其他非空白字符成为字符串的一部分。
您可以将整个交替缩短为匹配 4 个允许字符中的 1 个的字符类,后跟数字 1-9,并作为一个整体重复 1 次或多次。
为了不让其他字符成为匹配的一部分,您可以在左侧和右侧使用空白边界。
#include <stdio.h>
#include <stdlib.h>
int main()
{
char input;
char char1,char2,char3;
printf("Please enter a sentance: ");
scanf(" %c,%c,%c",&char1,&char2,&char3);
while(1){
if (char1 == 'E' && char2 == 'C' && char3 == 'E')
printf("Found ECE!");
if(char1 == '.' || char2 == '.'|| char3 == '.')
break;
scanf(" %c",&input);
if (input == '.')
break;
char1 = char2;
char2 = char3;
char3 = input;
}
return 0;
}
(?<!\S)(?:[FBLR][1-9])+(?!\S)
不直接在左侧断言非空白字符(?<!\S)
重复 1 次或多次匹配 F B L R 和数字 1-9(?:[FBLR][1-9])+
不直接在左侧断言非空白字符查看regex demo
在 Java 中
(?!\S)
如果这是从字符串的开头到结尾应该匹配的唯一输入,您也可以使用锚点:
String regex = "(?<!\\S)(?:[FBLR][1-9])+(?!\\S)";
Regex demo
以上是大佬教程为你收集整理的机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间全部内容,希望文章能够帮你解决机器人向上、向下、向左、向右移动任意 4 个方向,具体数字在 1-9 之间所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。