您当前的位置:首页 > 互联网教程

翻译这段英文(c语言)

发布时间:2025-05-24 17:37:50    发布人:远客网络

翻译这段英文(c语言)

一、翻译这段英文(c语言)

1、正则表达式是一个最广泛适用的专业语言,结构紧凑,表达符号描述模式的文本。 Regular expressions are algorithmically interesting, easy to implement in their simpler forms, and very useful.正则表达式演算有趣,易於执行的简单形式,和非常有用的。

2、A regular expression is a sequence of characters that defines a pattern.正则表达式是一个字符序列,定义了一个模式。 Most characters in the pattern simply match themselves in a target string, so the regular expression"abc" matches that sequence of three letters wherever it occurs in the target.大多数字符模式匹配自己只是在目标字符串,所以正则表达式的“ABC”相匹配的序列,三个字母不论在何处发生的目标。 A few characters are used in patterns as metacharacters to indicate repetition, grouping, or positioning.几个字符模式中使用的元字符显示重复,分组,或定位。 In POSIX regular expressions,"^" stands for the beginning of a string and"$" for the end, so"^x" matches an"x" only at the beginning of a string,"x$" matches an"x" only at the end,"^x$" matches"x" only if it is the sole character of the string, and"^$" matches the empty string.在POSIX正则表达式“^”代表一个字符串的开始和“$”为目的,因此“^ x”的匹配一个“x”只在一个字符串的开始,“×$”匹配一个“x”只是到了最后,“^ x$”匹配“x”的仅当它是唯一的字符的字符串,“^$”匹配空字符串。 The character"."字符“。”(a period) matches any character, so"xy" matches"xay,""x2y," and so on, but not"xy" or"xyxy."(一期)匹配任何字符,所以“札”匹配“xay”,“X2Y退,”等,而不是“札”或“xyxy。” The regular expression"^.$" matches a string that contains any single character."^.$"正则表达式匹配字符串,其中包含任何单个字符。

3、Please implement a simple Regular Expression matching program which only supports the three metacharacters,"^","$", and".".请实现一个简单的正则表达式匹配程序,只支持3元字符,“^”,“$”,和“。”。 The program receives two command line arguments: the first one is a target string(without whitespace), and the second one is a regular expression pattern(without whitespace).程序接收两个命令行参数:第一个是目标字符串(不带空格),而第二个是正则表达式模式(无空格)。 If the pattern matches the string, then it prints"hit", else prints"lost".如果模式匹配的字符串,则输出“打”,否则打印“丢失”。

4、For example, your executed program is named as"reg_match.exe".例如,您执行的程序命名为“reg_match.exe”。 When you run"reg_match.exe abcdefg ^abc", the program prints"hit".当您运行“reg_match.exe一个测试^ abc”时,该程序打印“击中”。 When you run"reg_match.exe abcdefg abc$", the program prints"lost".当您运行“reg_match.exe一个测试ABC的”,该程序打印“损失”。

二、用正则表达式判断一个二进制数是否能被3整除

例如,下面这个表达式可以匹配01串S当且仅当S是一个可以被3整除的二进制数。

如果你不信的话,不妨把下面这段代码粘贴进浏览器的地址栏,然后回车运行一下:

javascript:alert(/^1((10*1)|(01*0))*10*$/.test("1000000100"))

被test的是516的二进制表达。516可以被3整除,因此程序返回true。你可以自己把1000000100换成其它的二进制数试试。

但是呢,从这个正则表达式里我们竟看不出任何端倪。奇怪了,为什么这个正则表达式可以用于判断整除性?能被3整除的二进制数究竟有何规律?

其实,能被3整除的二进制数并没有什么明显的规律。这个正则表达式的求法可以说是相当暴力的。这一切的谜底很简单——判断一个数的整除性能轻易地用有限状态自动机实现,而有限状态自动机又可以翻译成正则表达式。

注意到,一个二进制数后面加一个“0”相当于该数乘以2,一个二进制数后面加一个“1”相当于该数乘2加1。设定三个状态,分别叫做0、1和2,它们表示当前的数除以3所得的余数。如果对于某个i和j,有i*2≡j(mod 3),就加一条路径i→j,路径上标一个字符“0”;如果i*2+1≡j(mod 3),则在路径i→j上标记“1”。状态0既是我们的初始状态,也是我们的最终状态。我们的自动机就做好了。现在,假如二进制数10010走进来了。从状态0出发,机器首先读到一个“1”,于是当前位置挪到状态1,表明目前该数模3余1;然后,系统读了一个“0”,我们紧跟着走到状态2,表明二进制数“10”被3除余2;下一步,我们回到状态1,表明“100”除以3余1;再往后,我们得知“1001”能被3整除。最后呢,我们读到一个0,“1001”的两倍当然还是能被3整除,我们依旧停留在原位。我们得到结论:二进制数10010能被3整除。

有限状态自动机是可以转化为正则表达式的。上面的这个自动机转化起来非常容易。我们可以先试着用自然语言叙述一下。首先,每个二进制数第一位必然为“1”。到达状态1后,我们可以随意地、任意多次地在状态1周围绕圈圈,最终回到状态1。临近末尾,我们再读到一个“1”返回状态0,这之后随便读多少个“0”都可以了。现在问题分解为:我们又如何用正则表达式表述“从状态1出发随意地走最终回到状态1”呢?在本例中,这是很好描述的:它可以是字符串“1000..001”和“0111..110”的任意组合。把这些东西用正则表达式写出来,就是我们刚才那个神秘的式子:1((10*1)|(01*0))*10*。

从原理上说,我们可以这种方法求出任意进制下用于任意数的整除性判断的正则表达式。只不过,它们所对应的自动机都更加复杂,从而得出一长串令人眼花缭乱的表达式。本文开头我把1((10*1)|(01*0))*10*的来源作为一个有趣的问题提出来,因为这个式子恰好不长,让人很难想到这背后藏有一个普适的暴力算法。

三、notepad++正则表达式 字符串详解

正则表达式是一个查询的字符串,它包含一般的字符和一些特殊的字符,特殊字符可以扩展查找字符串的能力,正则表达式在查找和替换字符串的作用不可忽视,它能很好提高工作效率。

文本编辑器 Notepad++ v6.3.3绿色多国语言版  点击下载

|匹配表达式左边和右边的字符.例如,“ab|bc”匹配“ab”或者“bc”.

[]匹配列表之中的任何单个字符.例如,“[ab]”匹配“a”或者“b”.“[0-9]”匹配任意数字.

[^]匹配列表之外的任何单个字符.例如,“[^ab]”匹配“a”和“b”以外的字符.“[^0-9]”匹配任意非数字字符.

*其左边的字符被匹配任意次(0次,或者多次).例如“be*”匹配“b”,“be”或者“bee”.

+其左边的字符被匹配至少一次(1次,或者多次).例如“be+”匹配“be”或者“bee”但是不匹配“b”.

?其左边的字符被匹配0次或者1次.例如“be?”匹配“b”或者“be”但是不匹配“bee”.

^其右边的表达式被匹配在一行的开始.例如“^A”仅仅匹配以“A”开头的行.

()影响表达式匹配的顺序,并且用作表达式的分组标记.

/转义字符.如果你要使用“/”本身,则应该使用“//”.

【1】正则表达式应用——替换指定内容到行尾

希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg”

①在替换对话框,查找内容里输入“abc.*”

②同时勾选“正则表达式”复选框,然后点击“全部替换”按钮

注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。

【2】正则表达式应用——数字替换

asdadas123asdasdas456asdasdasd789asdasd

asdadas[123]asdasdas[456]asdasdasd[789]asdasd

在替换对话框里面,勾选“正则表达式”复选框;

在查找内容里面输入“[0-9][0-9][0-9]”,不含引号

“替换为:”里面输入“[/0/1/2]”,不含引号

范围为你所操作的范围,然后选择替换即可。

实际上这也是正则表达式的使用特例,“[0-9]”表示匹配0~9之间的任何特例,同样“[a-z]”就表示匹配a~z之间的任何特例

上面重复使用了“[0-9]”,表示连续出现的三个数字

“/0”代表第一个“[0-9]”对应的原型,“/1”代表第二个“[0-9]”对应的原型,依此类推

“[”、“]”为单纯的字符,表示添加“[”或“]”,如果输入“其它/0/1/2其它”,则替换结果为:

asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd

如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1或 123或 12345或…

相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下

【3】正则表达式应用——删除每一行行尾的指定字符

因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现

这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表达式还得有个认识过程,解决方法如下

在替换对话框中,启用“正则表达式”复选框

在查找内容里面输入“345”表示从行尾匹配

如果从行首匹配,可以用“^”来实现,不过 EditPlus有另一个功能可以很简单的删除行首的字符串

c.在弹出对话框里面输入要清除的行首字符,确定

【4】正则表达式应用——替换带有半角括号的多行

几百个网页中都有下面一段代码:

在替换对话框启用“正则表达式”选项,这时就可以完成替换了

【5】正则表达式应用——删除空行

启动EditPlus,打开待处理的文本类型文件。

①、选择“查找”菜单的“替换”命令,弹出文本替换对话框。选中“正则表达式”复选框,表明我们要在查找、替换中使用正则表达式。然后,选中“替换范围”中的“当前文件”,表明对当前文件操作。

②、单击“查找内容”组合框右侧的按钮,出现下拉菜单。

③、下面的操作添加正则表达式,该表达式代表待查找的空行。(技巧提示:空行仅包括空格符、制表符、回车符,且必须以这三个符号之一作为一行的开头,并且以回车符结尾,查找空行的关键是构造代表空行的正则表达式)。

直接在”查找”中输入正则表达式“^[/t]*/n”,注意/t前有空格符。

(1)选择“从行首开始匹配”,“查找内容”组合框中出现字符“^”,表示待查找字符串必须出现在文本中一行的行首。

(2)选择“字符在范围中”,那么在“^”后会增加一对括号“[]”,当前插入点在括号中。括号在正则表达式中表示,文本中的字符匹配括号中任意一个字符即符合查找条件。

(3)按一下空格键,添加空格符。空格符是空行的一个组成成分。

(4)选择“制表符”,添加代表制表符的“/t”。

(5)移动光标,将当前插入点移到“]”之后,然后选择“匹配 0次或更多”,该操作会添加星号字符“*”。星号表示,其前面的括号“[]”内的空格符或制表符,在一行中出现0个或多个。

(6)选择“换行符”,插入“/n”,表示回车符。

④、“替换为”组合框保持空,表示删除查找到的内容。单击“替换”按钮逐个行删除空行,或单击“全部替换”按钮删除全部空行(注意:EditPlus有时存在“全部替换”不能一次性完全删除空行的问题,可能是程序BUG,需要多按几次按钮)。

1.在汉化的时候,是否经常碰到这样的语句需要翻译:

“Error adding the comment!”;

如果有很多类似的文件一个一个翻译显然很累而且感觉很无聊。

其实可以这样处理,在Editplus里面用替换功能,在替换对话框选中“正则表达式”复选框:

这样替换之后发生了什么?结果是:

“在增加the post时发生错误!”;

“在增加the comment时发生错误!”;

“在增加the user时发生错误!”;

ok,接下来你会怎么做?当然再替换一次把the post、the comment、the user替换成你要翻译的词。得到最后的结果:

在Editplus里面用替换功能,在替换对话框选中“正则表达式”复选框:

这样替换之后发生了什么?结果是:

在汉化量很大而且句式比较单调的情况下对效率的提高很明显!

解释一下:([^!|"|;]*)的意思是不等于!和”和;中的任何一个,意思就是这3个字符之外的所有字符将被选中(替换区域);

/1即被选中的替换区域所在的新位置(复制到这个新位置)。

3.经常手工清理一行一行地删除文本文件里面的空白行,其实可以交给Editplus更好的完成,在Editplus里面用替换功能,在替换对话框选中“正则表达式”复选框:

替换部分为空就可以删除空白行了,执行一下看看:)

abandon[2''b9nd2n]v.抛弃,放弃

abandonment[2''b9nd2nm2nt]n.放弃

abbreviation[2bri:vi''ei62n]n.缩写

abeyance[2''bei2ns]n.缓办,中止

ability[2''biliti]n.能力

able[''eibl]adj.有能力的,能干的

abnormal[9b''n0:m2l]adj.反常的,变态的

aboard[2''b0:d]adv.船(车)上

替换:@@@@@”/1″,”/2″,”/3″,

@@@@@”abandon”,”[2''b9nd2n]“,”v.抛弃,放弃”,

@@@@@”abandonment”,”[2''b9nd2nm2nt]“,”n.放弃”,

@@@@@”abbreviation”,”[2bri:vi''ei62n]“,”n.缩写”,

@@@@@”abeyance”,”[2''bei2ns]“,”n.缓办,中止”,

@@@@@”abide”,”[2''baid]“,”v.遵守”,

@@@@@”ability”,”[2''biliti]“,”n.能力”,

@@@@@”able”,”[''eibl]“,”adj.有能力的,能干的”,

@@@@@”abnormal”,”[9b''n0:m2l]“,”adj.反常的,变态的”,

@@@@@”aboard”,”[2''b0:d]“,”adv.船(车)上”,

@@@@@”abandon”,”[2''b9nd2n]“,”v.抛弃,放弃”,@@@@@”abandonment”,”[2''b9nd2nm2nt]“,”n.放弃”,@@@@@”abbreviation”,”[2bri:vi''ei62n]“,”n.缩写”,@@@@@”abeyance”,”[2''bei2ns]“,”n.缓办,中止”,@@@@@”abide”,”[2''baid]“,”v.遵守”,@@@@@”ability”,”[2''biliti]“,”n.能力”,@@@@@”able”,”[''eibl]“,”adj.有能力的,能干的”,@@@@@”abnormal”,”[9b''n0:m2l]“,”adj.反常的,变态的”,@@@@@”aboard”,”[2''b0:d]“,”adv.船(车)上”,@@@@@”abolish”,”[2''b0li6]“,”v.废除,取消”,@@@@@”abolition”,”[9b2''li62n]“,”n.废除,取消”

“abandon”,”[2''b9nd2n]“,”v.抛弃,放弃”,

“abandonment”,”[2''b9nd2nm2nt]“,”n.放弃”,

“abbreviation”,”[2bri:vi''ei62n]“,”n.缩写”,

“abeyance”,”[2''bei2ns]“,”n.缓办,中止”,

“abide”,”[2''baid]“,”v.遵守”,

“ability”,”[2''biliti]“,”n.能力”,

“able”,”[''eibl]“,”adj.有能力的,能干的”,

“abnormal”,”[9b''n0:m2l]“,”adj.反常的,变态的”,

“aboard”,”[2''b0:d]“,”adv.船(车)上”,

“abolish”,”[2''b0li6]“,”v.废除,取消”,