我有一个在Python/Ruby/PHP中定义的正则表达式,就像这样
"(forumdisplay.php\?.*page=%CURRENTPAGE%)"
Run Code Online (Sandbox Code Playgroud)
当我为Java做这件事时,我必须双重逃避该问号 \\?
像这样:
"(forumdisplay.php\\?.*page=%CURRENTPAGE%)";
Run Code Online (Sandbox Code Playgroud)
有没有我可以用来自动完成的功能?或者我是否需要更改所有正则表达式以使用Java正则表达式引擎?
如何告诉以下正则表达式只找到FIRST匹配?以下代码继续在字符串中查找所有可能的正则表达式.
即我只寻找子串的索引 (200-800;50]
public static void main(String[] args) {
String regex = "(\\[|\\().+(\\]|\\))";
String testName= "DCGRD_(200-800;50]MHZ_(PRE|PST)_(TESTMODE|REG_3FD)";
Pattern pattern =
Pattern.compile(regex);
Matcher matcher =
pattern.matcher(testName);
boolean found = false;
while (matcher.find()) {
System.out.format("I found the text" +
" \"%s\" starting at " +
"index %d and ending at index %d.%n",
matcher.group(),
matcher.start(),
matcher.end());
found = true;
}
if (!found){
System.out.println("Sorry, no match!");
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个这样的字符串:John \n Barber现在我想用实际的新行字符替换\n,这样它就会变成
John
理发师
这是我的代码
replaceAll("\\n", "\n");
Run Code Online (Sandbox Code Playgroud)
但它不起作用,并给我相同的字符串 John \n Barber
如何将扫描仪的分隔符设置为; 还是新线?
我试过了:
Scanner.useDelimiter(Pattern.compile("(\n)|;"));
但它不起作用.
我们与同事讨论内部任务,例如:
return result = myObject.doSomething();
Run Code Online (Sandbox Code Playgroud)
要么
if ( null == (point = field.getPoint()) )
Run Code Online (Sandbox Code Playgroud)
这些是可以接受的,还是应该用以下内容代替?为什么?
int result = myObject.doSomething();
return result;
Run Code Online (Sandbox Code Playgroud)
要么
Point point = field.getPoint();
if ( null == point)
Run Code Online (Sandbox Code Playgroud) 我有名单
['Q 0006 005C 0078 0030 0030 0033 0034 ONE_OF 0002 ']
Run Code Online (Sandbox Code Playgroud)
如何删除第一个元素,Q以及0002最后一个元素?
我试图在我的Windows 7机器上配置Hadoop.我能够启动名称节点和其他服务,但是当我运行Hadoop包(版本1.0.3)附带的示例时,会出现以下错误:
bin/hadoop: line 320 : C:\Program: Command not found.
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行该示例:
bin/hadoop jar hadoop-examples-1.0.3.jar pi 10
Run Code Online (Sandbox Code Playgroud)
我打开了这个hadoop错误发生的文件,发现第320行正在生成一个路径:
JAVA_PLATFORM=`CLASSPATH=${CLASSPATH} ${JAVA} -Xmx32m ${HADOOP_JAVA_PLATFORM_OPTS} org.apache.hadoop.util.PlatformName | sed -e "s/ /_/g"`
Run Code Online (Sandbox Code Playgroud)
所以我觉得问题可能在这个JAVA变量中,因为Cygwin对路径名使用不同的约定.有没有人也遇到过这个问题或者知道是什么导致了这个问题?
更新:感谢所有伟大的回应!我尝试了许多不同的正则表达式模式,但不明白为什么m.matches()没有做我认为它应该做的事情.当我切换到m.find()时,以及调整正则表达式模式,我能够到达某个地方.
我想匹配Java字符串中的模式,然后使用正则表达式提取匹配的部分(如Perl的$&运算符).
这是我的源字符串"s":DTSTART;TZID=America/Mexico_City:20121125T153000
我想提取"America/Mexico_City"部分.
我以为我可以使用Pattern和Matcher,然后使用m.group()提取,但它没有按照我的预期工作.我尝试使用不同的正则表达式字符串进行修改,而m.matches()上似乎唯一的东西".*TZID.*"是没有意义的,因为它只返回整个字符串.有人可以开导我吗?
Pattern p = Pattern.compile ("TZID*:"); // <- change to "TZID=([^:]*):"
Matcher m = p.matcher (s);
if (m.matches ()) // <- change to m.find()
Log.d (TAG, "looking at " + m.group ()); // <- change to m.group(1)
Run Code Online (Sandbox Code Playgroud) 在一些QT GUI线程(一个pthread线程)与一些C代码连接的上下文中,我偶然发现了以下问题:我启动了QT Gui线程,在我的C线程恢复其路径之前,我需要确保所有的QT Gui线程中的图形对象已经被构造出来并且它们是有效的QObject(因为C代码将调用QObject:connect()它们).
引言旁边,等待是通过一个pthread_cond_wait()+一个条件变量+一个C线程中的一个相关互斥:
int isReady=0;
pthread_mutex_lock(&conditionReady_mutex);
while(isReady==0) {
pthread_cond_wait(&conditionReady_cv, &conditionReady_mutex);
}
pthread_mutex_unlock(&conditionReady_mutex);
Run Code Online (Sandbox Code Playgroud)
另一方面,QT Gui线程构造其图形对象,然后用以下信号发出信号:
pthread_mutex_lock(&conditionReady_mutex);
isReady=1;
pthread_cond_broadcast(&conditionReady_cv);
pthread_mutex_unlock(&conditionReady_mutex);
Run Code Online (Sandbox Code Playgroud)
基本的东西,如你所见.但问题是:在Qt Gui线程中,我一直在使用pthread_cond_broadcast(),以确保我的C线程被唤醒,当然.是的,在我当前的应用程序中,我只有一个C线程和一个Qt Gui线程,并且pthread_cond_signal()应该完成唤醒C线程的工作(因为它保证唤醒至少一个线程,并且C线程是唯一的一).
但是,在更一般的上下文中,假设我有三个C线程,但我希望它们中的一个(或两个)被唤醒.一个(两个)特定线程.我该如何确保?
如果我使用pthread_cond_signal(),那可能只是唤醒第三个线程,这将完全忽略这一点,因为我感兴趣的一个线程没有被唤醒.OTOH,唤醒所有线程,甚至那些不需要的线程,这些都是pthread_cond_broadcast()过度的.
有一种方法可以告诉pthread_cond_signal()哪个线程被唤醒?
或者,我是否应该引入更多的条件变量,以便在唤醒的线程组中获得更精细的粒度pthread_cond_broadcast()?
谢谢.
我正在尝试创建一个函数来将浮点数舍入到定义的数字长度.到目前为止我得出的是:
import Numeric;
digs :: Integral x => x -> [x] <br>
digs 0 = [] <br>
digs x = digs (x `div` 10) ++ [x `mod` 10]
roundTo x t = let d = length $ digs $ round x <br>
roundToMachine x t = (fromInteger $ round $ x * 10^^t) * 10^^(-t)
in roundToMachine x (t - d)
Run Code Online (Sandbox Code Playgroud)
我正在使用该digs函数来确定逗号之前的数字位数以优化输入值(即将所有内容移到逗号之外,因此1.234变为0.1234 * 10^1)
该roundTo函数似乎适用于大多数输入,但是对于某些输入,我得到奇怪的结果,例如roundTo 1.0014 4生成1.0010000000000001而不是1.001 …