我在简单的正则表达式匹配方面遇到了很多问题.
我有这个带有重音字符的字符串(这只是一个例子)"Botó Entrepà Nadó Facebook! "我希望使用另一个列表中的单词来匹配单词.
这是我的代码的简化版本.例如匹配" Botó"
var matchExpr = new RegExp ('\\b' + 'Botó' + '\\b','i');
"Botó Entrepà Nadó Facebook! ".match(matchExpr);
Run Code Online (Sandbox Code Playgroud)
如果我运行它,它与Botó预期不匹配(Firefox,IE和Chrome).
我认为这是我的错误.但有趣的是......
如果我像这样修改字符串"Botón Entrepà Nadó Facebook! "(请注意" n"之后的" Botó")并运行相同的代码:
var matchExpr = new RegExp ('\\b' + 'Botó' + '\\b','i');
"Botón Entrepà Nadó Facebook! ".match(matchExpr);
Run Code Online (Sandbox Code Playgroud)
它匹配" Botó"!!!! ????? (至少在Firefox中).这对我n来说没有意义,因为" "不是一个单词边界(匹配\b).
如果您尝试匹配整个单词:
var matchExpr = new RegExp ('\\b' + 'Botón' + '\\b','i');
"Botón Entrepà Nadó …Run Code Online (Sandbox Code Playgroud) 我需要一个C#程序中的正则表达式.
我要捕获具有特定结构的文件的名称.
我使用了\ w char类,但问题是这个类与任何重音字符都不匹配.
那怎么办呢?我只是不想在我的模式中添加最常用的重音字母,因为我们理论上可以在每个字母上加上每个重音.
所以我虽然可能有一种语法,比如说我们想要一个不区分大小写(或者一个考虑重音的类),或者一个"正则表达式"选项,它允许我不区分大小写.
你知道这样的事吗?
非常感谢你
当我尝试加密的文本具有重音字符(例如ä,ï,ë)时,我遇到了在NodeJS中生成正确签名(使用crypto.js)的问题
generateSignature = function (str, secKey) {
var hmac = crypto.createHmac('sha1', secKey);
var sig = hmac.update(str).digest('hex');
return sig;
};
Run Code Online (Sandbox Code Playgroud)
如果'str'不包含重音字符(如ä,ï,ë等字符),则此函数将返回正确的HMAC签名.如果文本中存在重音字符,则不会返回正确的HMAC.重音字符在UTF8编码中有效,所以我不知道为什么加密有问题.可能是我需要以某种方式告诉加密我正在签署utf8编码文本,但我不知道如何做到这一点.
这篇文章中描述了完全相同的问题:带有重音的NodeJS hmac摘要问题 然而,帖子本身以及答案对我来说没有意义(因为他们传递他们想要加密的数据,秘密密钥应该在哪里走).
以下是str和secKey的硬编码值的代码版本:
var crypto = require('crypto');
str="äïë";
secKey="secret";
var hmac = crypto.createHmac('sha1', secKey);
var sig = hmac.update(new Buffer(str, 'utf8')).digest('hex');
console.log("Sig: " + sig);
console.log("Expected: 094b2ba039775bbf970a58e4a0a61b248953d30b");
// "Expected" was generated using http://hash.online-convert.com/sha1-generator
Run Code Online (Sandbox Code Playgroud)
输出::
西格:39c9f1a6094c76534157739681456e7878557f58
预计:094b2ba039775bbf970a58e4a0a61b248953d30b
谢谢
我有一个Java方法,在一个短语中查找单词,忽略单词的区分大小写,如果找到单词,则将其从短语中删除.这个词和短语可以是任何东西.他们是变种.这是我的代码:
private String removeWord( String phrase, String word ) {
phrase = phrase.replaceAll( "(?i)" + word , "" );
return phrase;
}
Run Code Online (Sandbox Code Playgroud)
事情很完美,除非这个词有重音.例如,如果单词是" álvarez "并且短语是" Álvarez短语 ",那么它将不起作用,因为"(?i)"在这种情况下无效.
有没有办法让"(?i)"与重音字符一起使用?
我有一些法语文本(包含重音字符,如"é"),存储在MySQL表中,其排序规则为utf8_unicode_ci(包括表和列),我想在HTML5页面上输出.
HTML页面字符集是UTF-8(<meta charset ="utf-8"/>),PHP文件本身编码为"没有BOM的UTF-8"(我在Windows上使用Notepad ++).我使用PHP5来请求数据库并生成HTML.
但是,在输出页面上,特殊字符(例如"é")显示为乱码并被" "替换.
当我浏览数据库(通过phpMyAdmin)时,那些相同的重音字符显示就好了.
我在这里错过了什么?
(注意:将页面编码(通过Firefox的"web开发人员"菜单)更改为ISO-8859-1解决了问题...除了直接出现在PHP文件中的特殊字符,现在已经损坏了.但无论如何,我我宁愿理解为什么它不能像UTF-8一样工作而不是改变编码而不理解它的工作原理.^^;)
如果输入字符串包含任何重音字符,我想执行任务,否则在SQL中执行另一个任务.有没有办法在SQL中检查这个条件?
例如:
@myString1 = 'àéêöhello!'
IF(@myString1 contains any accented characters)
Task1
ELSE
Task2
Run Code Online (Sandbox Code Playgroud) 有没有简单的方法来打印copyleft符号?
https://en.wikipedia.org/wiki/Copyleft
例如,简单如下:
©©
它可能是:
&anticopy;&anticopy;
我遇到了一个奇怪的问题.在下面的代码中,我正在寻找ß的存在.
public static void main(String[] args) {
char [] chArray = {'ß'};
String str = "Testß";
for(int i=0; i<chArray.length; i++){
if(str.indexOf(chArray[i])>-1){
System.out.println("ß is present");
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个在Linux上运行JBOSS的Web应用程序,Java 6. 上面的代码在上面指定的应用程序中包含代码时没有检测到ß的存在. 令人惊讶的是,如果我在我的eclipse工作区中编译相同的文件,然后在应用程序中应用补丁,它将按预期运行!
注意事项:
我在数组声明中将值从ß更改为等效于\ u00DF的unicode,但行为仍然相同.
char [] chArray = {'\ u00DF'};
当我反编译生成的类文件时,字符数组声明的值显示为65533,即\ uFFFD,只有用于未识别符号的替换字符.我使用JD-GUI作为反编译器,我认为不值得信赖!
需要你的帮助人!我确信它与以下内容不同:beta Java的equalsIgnoreCase的区分大小写问题与ß(德语字母表中使用的"Sharp S")失败
提前致谢
我正在使用yaml文件,这些文件必须是人类可读和可编辑的,但也可以从Python代码编辑.我正在使用Python 2.7.3
该文件需要处理重音(主要用于处理法语文本).
以下是我的问题示例:
import codecs
import yaml
file = r'toto.txt'
f = codecs.open(file,"w",encoding="utf-8")
text = u'héhéhé, hûhûhû'
textDict = {"data": text}
f.write( 'write unicode : ' + text + '\n' )
f.write( 'write dict : ' + unicode(textDict) + '\n' )
f.write( 'yaml dump unicode : ' + yaml.dump(text))
f.write( 'yaml dump dict : ' + yaml.dump(textDict))
f.write( 'yaml safe unicode : ' + yaml.safe_dump(text))
f.write( 'yaml safe dict : ' + yaml.safe_dump(textDict))
f.close()
Run Code Online (Sandbox Code Playgroud)
书面文件包含:
write unicode : héhéhé, …Run Code Online (Sandbox Code Playgroud) unicode ×4
regex ×3
diacritics ×2
java ×2
utf-8 ×2
ascii ×1
c# ×1
character ×1
hmac ×1
html ×1
ignore-case ×1
javascript ×1
match ×1
mysql ×1
node-crypto ×1
node.js ×1
php ×1
python ×1
pyyaml ×1
sql ×1
sql-server ×1
symbols ×1
yaml ×1