替换包含括号的字符串

时间:2016-08-30 10:52:43

标签: regex scala

在此字符串中:

val s = "pow(10,3) + pow(10,3) + pow(10,3)"

我需要替换

pow(10,3)

1000

所以最终的结果是

1000 + 1000 + 1000

我试过

s.replaceAll("pow(10,3)", "1000")

然而,这不起作用,因为第一个参数是正则表达式,括号表示一个组。上面的陈述实际上并没有取代任何东西。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

要替换文字字符串,请不要使用replaceAll,请使用replace

请参阅this Scala demo

val s = "pow(10,3) + pow(10,3) + pow(10,3)";
print(s.replace("pow(10,3)", "1000"));
// => 1000 + 1000 + 1000

如果您需要使用replaceAll,必须使用加倍的反斜杠对文字括号进行转义:

s.replaceAll("pow\\(10,3\\)", "1000")

或者,使用三引号字符串文字并使用单个反斜杠来转义特殊的正则表达式元字符:

s.replaceAll("""pow\(10,3\)""", "1000")

请参阅this Scala demoanother one here

replaceAllreplace都将取代多个出现次数

replace旁边,您可以使用replaceAllLiterally(literal: String, replacement: String): String

另见Is there ever a reason to use Scala's StringLike.replaceAllLiterally over Java's String.replace?

答案 1 :(得分:1)

您需要将if (isset($_POST['submit'])) { require 'gettoken1.php'; { $baseurl = 'http://202.124.173.189/api/v1/doctorAvailability'; $curl = curl_init($baseurl); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json',"Authorization: Bearer $atoken")); // Set the POST arguments to pass to the Sugar server $rawPOSTdata = array( "type" => "private", "hosID" => $_POST['hosMaptxt'], "specID" => $_POST['specialityMaptxt'], "date" => $_POST['date'], "name" => '%'.$_POST['docname'].'%' ); curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($rawPOSTdata)); $response = curl_exec($curl); curl_close($curl); if (!$response) { die("Connection Failure.\n"); $result = json_decode($response,true); $json=$result['data']['resultMap']; $html=array(); $output[]="<table><tr> "; foreach($result['resultMap']as $data) { $output.="<td>".$data['SpecName']."</td>"; $output.="<td>".$data['HosName']."</td>"; $output.="<td>".$data['DocName']."</td>"; $output.="<td>".$data['DoctorNo']."</td>"; $output.="<td>".$data['AppDay']."</td>"; $output.="<td>".$data['HosTown']."</td>"; } $output .="</tr></table>"; echo $output; } curl_close($curl); if ( isset($result->error) ) { die($result->error_message."\n"); } } ?> ()一起转义,否则将其视为群组

&#13;
&#13;
\
&#13;
&#13;
&#13; 更新:对于scala

你需要双重转义括号:var re = /pow\(10,3\)/g; var str = 'pow(10,3) + pow(10,3) + pow(10,3)'; var subst = '1000'; var result = str.replace(re, subst); console.log(result);

答案 2 :(得分:1)

尝试replaceAllLiterally,接受String literal作为输入。

val str = "pow(10,3) + pow(10,3) + pow(10,3)";
println(str.replaceAllLiterally("pow(10,3)", "1000"));

答案 3 :(得分:0)

您可以使用反斜杠转义括号,以便将它们视为另一个字符:

"""pow\(10,3\)"""