我在阅读 SCJP 指南时,发现了以下问题,它看起来很简单,对某些人来说可能也很容易。但是,我真的很难找到解决方案。
import java.util.regex.*;
class study{
public static void main(String[] args) {
Pattern p = Pattern.compile(args[0]);
Matcher m = p.matcher(args[1]);
boolean b=false;
while(b=m.find()){
System.out.print(m.start()+" "+m.group());
}
}
}
在那个问题中,命令行参数是这样给出的
java study "\d*" ab34ef
然后说输出结果是什么,我猜是 334 或 234 并且在该选项中。但是,答案(在 Windows 上)是 01234456。所以,我的第一个问题是如何 ??
现在,人们说,你为什么不尝试。然后,我会说,是的,我做到了。但是,就我而言,我的屏幕上没有任何输出。然后,我试图找出考虑所有类型的输入及其值。

在上面的屏幕截图中,显示了第二个输出,当我在 main 方法中包含 System.out.print(args[0]+""+args[1]); 时。
甚至,我把命令行改成了这个
java study "\\d*" ab34ef
然后,我也没有得到任何输出。所以,任何人都可以解释这一切。
输出==
java study "\d*" ab34ef
No output
java study "\\d*" ab34ef
No output
然后我在 main 方法中添加 System.out.print(args[0]+""+args[1]);。
java study "\d*" ab34ef
\Document and Setting ab34ef
java study "\\d*" ab34ef
\\d* ab34ef
注意:没有输出意味着它没有显示任何东西。
最佳答案
实际上发生的是,当您将 \d* 作为命令行参数传递时,它被视为 \d 后跟 * 通配符.因此,该参数将替换为该目录中以 \d 开头的所有文件。 (此行为发生在 Windows 上。虽然我不知道 Linux,因为我没有使用过它)。
因此,您没有将正则表达式传递给您的程序,而是将以 \d 开头的文件/目录名称传递给您的程序。
尝试打印代码中的参数:-
System.out.println(args[0] + " : " + args[1]);
这将为您提供一些以 \d... 开头的文件/目录名称
解决方法:-
如果你想传递正则表达式,你可以使用变通方法。将 "\d*" 作为正则表达式传递,前面有一个空格,并在您的代码中使用 args[0].trim() 或 args[0 ].replace("", ""); 而不是 args[0]。
所以,称它为:-
java Foo " \d*" ab34ef
并将您的代码更改为:-
Pattern p = Pattern.compile(args[0].replace(" ", ""));
Matcher m = p.matcher(args[1]);
这将为您完成这项工作。
现在就是通过命令行传递 Regex 的问题了。
至于为什么会得到该输出,请查看此答案 - string-replaceall-strange-behaviour ,这是关于类似的问题。您将了解为什么会发生这种情况。
关于java - 在 Windows 上的 args[] 数组中传递转义序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13970946/
我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
我有多个ActiveRecord子类Item的实例数组,我需要根据最早的事件循环打印。在这种情况下,我需要打印付款和维护日期,如下所示:ItemAmaintenancerequiredin5daysItemBpaymentrequiredin6daysItemApaymentrequiredin7daysItemBmaintenancerequiredin8days我目前有两个查询,用于查找maintenance和payment项目(非排他性查询),并输出如下内容:paymentrequiredin...maintenancerequiredin...有什么方法可以改善上述(丑陋的)代
我的代码目前看起来像这样numbers=[1,2,3,4,5]defpop_threepop=[]3.times{pop有没有办法在一行中完成pop_three方法中的内容?我基本上想做类似numbers.slice(0,3)的事情,但要删除切片中的数组项。嗯...嗯,我想我刚刚意识到我可以试试slice! 最佳答案 是numbers.pop(3)或者numbers.shift(3)如果你想要另一边。 关于ruby-多次弹出/移动ruby数组,我们在StackOverflow上找到一
我需要读入一个包含数字列表的文件。此代码读取文件并将其放入二维数组中。现在我需要获取数组中所有数字的平均值,但我需要将数组的内容更改为int。有什么想法可以将to_i方法放在哪里吗?ClassTerraindefinitializefile_name@input=IO.readlines(file_name)#readinfile@size=@input[0].to_i@land=[@size]x=1whilex 最佳答案 只需将数组映射为整数:@land边注如果你想得到一条线的平均值,你可以这样做:values=@input[x]
我正在使用puppet为ruby程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这
如何匹配未被反斜杠转义的平衡定界符对(其本身未被反斜杠转义)(无需考虑嵌套)?例如对于反引号,我试过了,但是转义的反引号没有像转义那样工作。regex=/(?!$1:"how\\"#expected"how\\`are"上面的正则表达式不考虑由反斜杠转义并位于反引号前面的反斜杠,但我愿意考虑。StackOverflow如何做到这一点?这样做的目的并不复杂。我有文档文本,其中包括内联代码的反引号,就像StackOverflow一样,我想在HTML文件中显示它,内联代码用一些spanMaterial装饰。不会有嵌套,但转义反引号或转义反斜杠可能出现在任何地方。
这个问题在这里已经有了答案:Checktoseeifanarrayisalreadysorted?(8个答案)关闭9年前。我只是想知道是否有办法检查数组是否在增加?这是我的解决方案,但我正在寻找更漂亮的方法:n=-1@arr.flatten.each{|e|returnfalseife
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问
我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新rubygems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems