Aller au contenu

[RESOLU][java] expressions régulières


Soulfly_tribe90

Messages recommandés

Salut tout le monde,

Je voulais savoir si quelqu'un n'aurai pas une expression régulières qui me vire les commentaires d'un fichier source écris en C ou C++.

J'utilise ca : pw.println(sc.nextLine().replaceAll("\\s\\s*"," ")); par exemple (pour les espaces) mais j'arrive pas a faire une expression réguliere performante qui me vire les commentaires... et je suis au bord du gouffre lol donc si quelqu'un la deja fait ca serait cool qu'il me dise comment il a fait :francais:

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Hummm, comme ça ?

String source = "coucou /* commentaire 1 \n commentaire 2 à la ligne */ hello\nworld //end comm\nyeah";
System.out.println("Avant :");
System.out.println(source);
System.out.println("----------");

String regex1 = "/\\*(.|\\r|\\n)*\\*/"; 
String regex2 = "//.*\\n";

System.out.println("Après :");
System.out.println(source.replaceAll(regex1,"").replaceAll(regex2,"\n"));

La regex 1 supprime les commentaires /* ... */

La regex 2 supprime les commentaires de fin de ligne // ...

Lien vers le commentaire
Partager sur d’autres sites

Apparement ca me vire rien.

je te donne le code avec le commentaire... bon c du lisaac mais les commentaires sont presque pareil.

/***************************************************************************
*					  Isaac Object Operating System					   *
*					  LORIA - UHP - INRIA - FRANCE						*
*				   Jerome BOUTET  - boutet@loria.fr					   *
*				   Benoit SONNTAG - bsonntag@loria.fr					 *
*						  http://www.IsaacOS.com						  *
****************************************************************************/
section HEADER

 - name	 := FOURONLINE; 

 - category := MACRO;

 - comment  := "FOUR WINS game";

 - author   := "Benoit Sonntag (bsonntag@loria.fr)";

 - version  := "1.0";

section INHERIT

 - parent_object:OBJECT := OBJECT;

section PRIVATE

 //
 // Data.
 //

 - table:FIXED_ARRAY2[USMALLINT];

 // 
 // Consultation.
 //

 - table_line cols:INTEGER :INTEGER <-
 // Get line with column.
 ( + line:INTEGER;
? {table.item cols,0 = 0};

{(line<7) && {table.item cols,line = 0}}.while_do {
  line:=line+1;
};
line-1
 );

 - match_null:BOOLEAN <-
 // True, if match null.
 ( + cols:INTEGER;

{(cols<7) && {table.item cols,0 != 0}}.while_do {
  cols:=cols+1;
};
cols=7
 );

 - is_success x,y:INTEGER :BOOLEAN <-
 // True, if win.
 ( 
(count_origin x,y step   1 ,  0 > 3) ||  // Line.
{count_origin x,y step   0 ,  1 > 3} ||  // Column.
{count_origin x,y step (-1),(-1)> 3} ||  // Diagonal 1.
{count_origin x,y step (-1),  1 > 3}	 // Diagonal 2.
 );

 - count_origin x,y:INTEGER step a,b:INTEGER :INTEGER <-
 // Count alignment. 
 ( + cpt,xx,yy:INTEGER;
+ ref:USMALLINT;

// Reference.
ref:=table.item x,y;

// Before.
xx:=x;
yy:=y;
{
  cpt:=cpt+1;  
  xx:=xx-a;
  yy:=yy-b;
}.do_while {
  (xx.in_range 0 to 6) && 
  {yy.in_range 0 to 6} && 
  {table.item xx,yy = ref}
};

// After.
xx:=x+a;
yy:=y+b;
{
  (xx.in_range 0 to 6) && 
  {yy.in_range 0 to 6} && 
  {table.item xx,yy = ref}
}.while_do {
  cpt:=cpt+1;  
  xx:=xx+a;
  yy:=yy+b;
};

cpt
 );

 //
 // Play.
 //

 - play_computer:INTEGER <-
 // Get column.
 ( 
max_level level min 65536;
column_choice
 );

 //
 // Alpha-Beta algorithm (Min-Max).
 // 

 - level:INTEGER <- 2; 

 - column_choice:INTEGER;

 - max_level lev:INTEGER min val_min:INTEGER :INTEGER <-
 ( + cols,line,max,val:INTEGER;
+ val_line,val_cols,val_dia1,val_dia2:INTEGER;

{(cols<7) && {max<=val_min}}.while_do {
  (table.item cols,0 = 0).if {
	line:=table_line cols;
	table.put 2 to cols,line;
	// Evaluation.
	val_line := count_origin cols,line step 1 ,0;
	val_cols := count_origin cols,line step 0,1;
	val_dia1 := count_origin cols,line step (-1),(-1);
	val_dia2 := count_origin cols,line step (-1),1;
	val:=(val_line>3).to_numeric+(val_cols>3).to_numeric+
		 (val_dia1>3).to_numeric+(val_dia2>3).to_numeric;
	((val!=0) || {lev=0}).if {
  // Evaluation.	  
  val:=(val<<5) + val_line+val_cols+val_dia1+val_dia2 + (lev << 8);
	} else {
	  // Min evaluation.
  val:=min_level lev max max;	  
	};		
table.put 0 to cols,line;
	(val>=max).if { 
	  max:=val;
  (lev=level).if {
		column_choice := cols; 
	  };
};
  };
  cols:=cols+1;
};
max
 );

 - min_level lev:INTEGER max val_max:INTEGER :INTEGER <-
 ( + cols,line,min,val:INTEGER;

min:=65536;
{(cols<7) && {min>=val_max}}.while_do {
  (table.item cols,0 = 0).if {
	line:=table_line cols;
	table.put 1 to cols,line;
	(is_success cols,line).if {
  val:=level - lev;
	} else {
	  val:=max_level (lev-1) min min;
	};
	table.put 0 to cols,line;
	(val<min).if { 
	  min:=val;
	};
  };
  cols:=cols+1;
};
(min=65536).if {
  min:=0;
};
min
 );

 //
 // Display.
 //

 - display_text <-  
 (	 
'|'.print;
'1'.to '7' do { c:CHARACTER;
  c.print;
  '|'.print;
};
'\n'.print;

// Display Game.
0.to 6 do { y:INTEGER;
  '|'.print;
  0.to 6 do { x:INTEGER;
table.item x,y
.when 0 then { ' '.print; }
.when 1 then { 'X'.print; }
.when 2 then { 'O'.print; };	
	'|'.print;	
  };
  '\n'.print;
};	

// Information.
stat
.when 0 then { string_tmp.copy "Player X ?"; }
.when 1 then { string_tmp.copy "Player O ..."; }
.when 2 then { string_tmp.copy "Winner: Player X."; } 
.when 3 then { string_tmp.copy "Winner: Player O."; }
.when 4 then { string_tmp.copy "Winner: Match null."; };
string_tmp.print;
'\n'.print;
 );

 - string_tmp:STRING;
 - stat:USMALLINT;

section PUBLIC  

 - make_text <-
 ( + catch:CHARACTER;
+ col,line:INTEGER;

// Initialisation.
table := FIXED_ARRAY2[USMALLINT].create 7,7;	
string_tmp:=STRING.create 80;

display_text;
{stat < 2}.while_do {
  (stat = 0).if {
//
// Humain player.
//
{
  IO.read_character;
  catch:=IO.last_character;
}.do_until {catch.in_range '1' to '7'};
col := catch.decimal_value-1;
(table.item col,0 = 0).if {	
  // Put.
  line:=table_line col;
  table.put 1 to col,line;	  
  // Detect success.
  (is_success col,line).if {
	stat := 2;
	display_text;
  }.elseif {match_null} then {
	stat := 4;
	display_text;
  } else {
	//
	// Computer player.
	//
	stat := 1;
	display_text;
	col := play_computer;
	// Put.
	line:=table_line col;		
	table.put 2 to col,line;	  
	// Detect success.
	(is_success col,line).if {
	  stat := 3;
	}.elseif {match_null} then {
	  stat := 4;		  
	} else {
	  stat := 0;
	};
	display_text;
  };
};
  } else {
//
// New game.
//
table.clear_all;
stat := 0;
display_text;
  };
};	
 );  

Perso j'ai fait comme ca et ca m'enleve la plupart des commentaires :

pw.println(sc.nextLine().replaceAll("[/\\**][^\n]*||[^\\*][^\n]*||//[^\n]*||[$\\*]*[^\n]*","").replaceAll("\\s\\s*"," "));

Mais bon je sais pas si c'est vraiment bien :s

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...