繁体   English   中英

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

[英]how to match other languages words with regex

用英文单词替换希腊语给定文本中的单词。

这里是一个例子:

 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代码编写字符...使用languaje可以用我写的最简单的方式替换单词编码? Python,Java,Perl ...?

应该这样做:

'Ενώ 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 );

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 να χτίσει πια μηχανές αποκωδικοποίησης, οι άλλοι.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM