特定字符串的问题

test88666 2014-02-08 11:50:52
有字符串如下:
1,发了点击科技管理机构。**R1(10/8)**
2,到了放家里会计估计。**R2(10/8)**
3,里点击付款了几个人头。**R3(10/8)**
需求:把所有两个星号以及之间的所有字符串全部删除。
说明:两个星星的右边一定是R开头,结尾一定是)**,但是一共会出现多少对这样的组合则不确定。
实现效果:
1,发了点击科技管理机构。
2,到了放家里会计估计。
3,里点击付款了几个人头。
请大家指点一二,谢谢了!
...全文
161 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏雪无痕 2014-02-10
  • 打赏
  • 举报
回复

uses PerlRegEx;
 
//放入函数或者过程中
var
    Regex: TPerlRegEx;
    ResultString: string; //替换的结果
begin 
Regex := TPerlRegEx.Create(nil);
try
    Regex.RegEx := '\*\*R.+\)\*\*$';//需要替换的正则表达式
    Regex.Options := [preCaseless]; //忽略大小写
    Regex.Subject := SubjectString; //SubjectString是需要替换的字符串
    Regex.Replacement := '';        //替换成空字符串,即删除
    Regex.ReplaceAll;               //全部替换
    ResultString := Regex.Subject;  //获得替换结果ResultString
finally
    Regex.Free;                     //
end;
end;
踏雪无痕 2014-02-10
  • 打赏
  • 举报
回复

uses PerlRegEx;

//放入函数或者过程中
begin
var
	Regex: TPerlRegEx;
	ResultString: string; //替换的结果

Regex := TPerlRegEx.Create(nil);
try
	Regex.RegEx := '\*\*R.+\)\*\*$';//需要替换的正则表达式
	Regex.Options := [preCaseless]; //忽略大小写
	Regex.Subject := SubjectString; //SubjectString是需要替换的字符串
	Regex.Replacement := '';        //替换成空字符串,即删除
	Regex.ReplaceAll;               //全部替换
	ResultString := Regex.Subject;  //获得替换结果ResultString
finally
	Regex.Free;                     //
end;
end;
pathletboy 2014-02-10
  • 打赏
  • 举报
回复
引用 3 楼 test88666 的回复:
[quote=引用 2 楼 sololie 的回复:] 同LS, notepad++是电脑上必备的东西。 如果用代码实现,简单点就用正则,推荐用第三方库TPerlRegEx,如果用XE或以上版本,delphi就自带了正则库(也是第三方的,非官方编写) 这是TPerlRegEx的用法

uses PerlRegEx;

begin
  with TPerlRegEx.Create(nil) do
  begin
    Subject := '1,发了点击科技管理机构。**R1(10/8)**'; // 要替换的源文本
    RegEx := '\*\*R.+\)\*\*$'; // 正则表达式
    Replacement := ''; // 替换为空字符
    ReplaceAll; // 替换全部

    ShowMessage(Subject);
    Free;
  end;
end;
楼上这朋友,我用的是DELPHI2005,然后代码如下:

procedure TForm1.Button1Click(Sender: TObject);
Var
  reg:TPerlRegEx;
begin
  reg.Subject:='大叫放開了擊潰了,漏盡更闌科軟件更快了。**R(sdlfjdslfdlf)**';
  reg.RegEx := '\*\*R.+\)\*\*$';
  reg.Replacement := '';
  reg.ReplaceAll;
  ShowMessage(reg.Subject);
  Free;
end;
执行的时候就会出现如图的提示:,再继续就会出现: Access violation at address 00404F10 in module 'Project1.exe'.Write of address 004F003E 请继续指点一二,多谢了! [/quote] 你reg:TPerlRegEx;未Create 加上 reg := TPerlRegEx.Create(nil);
test88666 2014-02-10
  • 打赏
  • 举报
回复
引用 2 楼 sololie 的回复:
同LS, notepad++是电脑上必备的东西。
如果用代码实现,简单点就用正则,推荐用第三方库TPerlRegEx,如果用XE或以上版本,delphi就自带了正则库(也是第三方的,非官方编写)

这是TPerlRegEx的用法

uses PerlRegEx;

begin
with TPerlRegEx.Create(nil) do
begin
Subject := '1,发了点击科技管理机构。**R1(10/8)**'; // 要替换的源文本
RegEx := '\*\*R.+\)\*\*$'; // 正则表达式
Replacement := ''; // 替换为空字符
ReplaceAll; // 替换全部

ShowMessage(Subject);
Free;
end;
end;

楼上这朋友,我用的是DELPHI2005,然后代码如下:

procedure TForm1.Button1Click(Sender: TObject);
Var
reg:TPerlRegEx;
begin
reg.Subject:='大叫放開了擊潰了,漏盡更闌科軟件更快了。**R(sdlfjdslfdlf)**';
reg.RegEx := '\*\*R.+\)\*\*$';
reg.Replacement := '';
reg.ReplaceAll;
ShowMessage(reg.Subject);
Free;
end;

执行的时候就会出现如图的提示:,再继续就会出现:
Access violation at address 00404F10 in module 'Project1.exe'.Write of address 004F003E
请继续指点一二,多谢了!
test88666 2014-02-10
  • 打赏
  • 举报
回复
多谢诸位了! 我之所以没有Creat,是因为

Regex := TPerlRegEx.Create(nil);
报错,原来写成这样就可以了:

Regex := TPerlRegEx.Create();
我用的是DELPHI2005。
pathletboy 2014-02-08
  • 打赏
  • 举报
回复
如果单次任务推荐notepad++,如果要写程序可以用TRegExpr
正则表达式替换
\*\*.+\*\*$



sololie 2014-02-08
  • 打赏
  • 举报
回复
同LS, notepad++是电脑上必备的东西。 如果用代码实现,简单点就用正则,推荐用第三方库TPerlRegEx,如果用XE或以上版本,delphi就自带了正则库(也是第三方的,非官方编写) 这是TPerlRegEx的用法

uses PerlRegEx;

begin
  with TPerlRegEx.Create(nil) do
  begin
    Subject := '1,发了点击科技管理机构。**R1(10/8)**'; // 要替换的源文本
    RegEx := '\*\*R.+\)\*\*$'; // 正则表达式
    Replacement := ''; // 替换为空字符
    ReplaceAll; // 替换全部

    ShowMessage(Subject);
    Free;
  end;
end;

5,402

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧