如何匹配其他语言的单词与正则表达式

时间:2014-07-19 13:59:22

标签: javascript python regex perl unicode

替换希腊语给定文字中的字词,例如英文字样。

这是一个例子:

 var str= "Ενώ Gallant δεν λειτουργεί στην προσπάθεια να χτίσει πια μηχανές αποκωδικοποίησης, οι άλλοι."

function findword(){
  word = new RegExp("\\b(προσπάθεια)\\b","gi")
  var sust = str.replace(word,'effort');
}

它应该返回: “ΕνώGallantδενλειτουργείστην努力ναχτίσειπιαμηχανέςαποκωδικοποίησης,οιάλλοι。

尝试在JavaScript中这样做我失败了,但我读过这是不可能的,因为这种语言不能处理除英语以外的Unicode字符。我找到的唯一可能是xregexp,但它似乎只能检测字符类而不是单个单词。 ¿真的不可能让它在JavaScript中运行吗?

Python 3文档指出这种语言可以处理unicode字符,但在这种情况下,似乎有必要使用unicode代码编写字符...使用哪种语言可以用最简单的方式替换单词我在代码中写道? Python,Java,Perl ......?

2 个答案:

答案 0 :(得分:0)

这应该这样做:

'Ενώ Gallant δεν λειτουργεί στην προσπάθεια να χτίσει πια μηχανές αποκωδικοποίησης, οι άλλοι.'.replace( /(προσπάθεια)/g, 'effort' )

修改

我认为这完全符合您的要求:

String.prototype.translate = function translate( greek, english ) {
  return this.replace( new RegExp( '(' + greek + ')' ), english );
}

var translatedString = 'Ενώ Gallant δεν λειτουργεί στην προσπάθεια να χτίσει πια μηχανές αποκωδικοποίησης, οι άλλοι.'.translate( 'προσπάθεια', 'effort' );
console.log( translatedString );

答案 1 :(得分:0)

Perl具有出色的unicode处理能力。例如。以下代码:

use 5.016;
use warnings;
use utf8;
use open qw(:std :utf8);

my $str= "Ενώ Gallant δεν λειτουργεί στην προσπάθεια να χτίσει πια μηχανές αποκωδικοποίησης, οι άλλοι.";
$str =~ s/\bπροσπάθεια\b/effort/g;
say $str;

打印

Ενώ Gallant δεν λειτουργεί στην effort να χτίσει πια μηχανές αποκωδικοποίησης, οι άλλοι.