Je suis nouveau dans Regex et j'essaie d'en écrire un qui correspond à une ligne qui ne contient pas [a-zA-Z] à moins qu'elle ne contienne le mot NaN.

Jusqu'à présent, j'ai réussi à comprendre que ^((?![a-z]).)*$ me donne chaque ligne sans caractère, mais comment ajouterais-tu, faute d'un meilleur terme, une "exception"?

Par exemple, j'ai les lignes suivantes dans un fichier:

sci_water_pressure sci_water_temp
cc cc
4 4
NaN 7.4

Je veux qu'il corresponde aux lignes:

4 4
NaN 7.4

Modifier

Le produit final de cette expression régulière sera utilisé en Java. Je ne sais pas si cela aide / gêne.

Deuxième modification

Il semble que certaines des réponses ci-dessous fonctionnent pour les exemples que j'ai donnés, mais pour une raison quelconque, le fichier entier avec lequel je les essaie ne le fait pas. Voici un exemple de fichier.

http://rubular.com/r/LzbB3nXcQP

dbd_label: DBD_ASC(dinkum_binary_data_ascii)file
encoding_ver: 2
num_ascii_tags: 14
all_sensors: 0
filename: skookum_346-2013-280-0-0
the8x3_filename: 01440000
filename_extension: sbd
filename_label: skookum_346-2013-280-0-0-sbd(01440000)
mission_name: initial.mi
fileopen_time: Tue_Oct__8_16:47:26_2013
sensors_per_cycle: 32
num_label_lines: 3
num_segments: 1
segment_filename_0: skookum_346-2013-280-0-0
c_ballast_pumped c_de_oil_vol c_heading c_wpt_lat c_wpt_lon m_altitude m_ballast_pumped m_battery_inst m_battpos m_depth m_de_oil_vol m_fin m_gps_lat m_gps_lon m_heading m_lat m_lon m_pitch m_present_secs_into_mission m_present_time m_roll m_water_depth m_water_vx m_water_vy sci_m_present_secs_into_mission sci_m_present_time sci_rinkoii_do sci_rinkoii_temp sci_rinkoii_voltage sci_water_cond sci_water_pressure sci_water_temp 
cc cc rad lat lon m cc volts in m cc rad lat lon rad lat lon rad sec timestamp rad m m/s m/s sec timestamp % degc volts s/m bar degc 
4 4 4 8 8 4 4 4 4 4 4 4 8 8 4 8 8 4 4 8 4 4 4 4 4 8 4 4 4 4 4 4 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 130.432 1381250778.43192 NaN NaN NaN NaN 130.432 1381250778.43192 0 0 0 0 0 0 
260 260 0 0 0 0 0 11.5481 1.39219 0 261.365 0.00298638 69696969 69696969 1.66679 4838.945 -12326.7857 0.020944 9.297 1381250786.32733 0.169297 -1 0 0 NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 14.2859 1381250791.28595 NaN NaN NaN NaN 14.2859 1381250791.28595 0 0 0 0 0 0 
260 260 0 0 0 0 0 11.6276 1.39219 0 261.279 0 69696969 69696969 1.66679 4838.945 -12326.7857 0.020944 79.339 1381250856.3692 0.169297 -1 0 0 NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 94.015 1381250871.04517 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 98.624 1381250875.65494 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 103.208 1381250880.23843 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.322 0.00298638 NaN NaN NaN NaN NaN NaN 107.777 1381250884.80746 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 112.35 1381250889.3804 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 116.907 1381250893.93762 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0863 -12326.4584 NaN NaN NaN NaN 121.466 1381250898.49667 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.336 0.00298638 4842.0888 -12326.4745 NaN NaN NaN NaN 126.145 1381250903.17502 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0913 -12326.4907 NaN NaN NaN NaN 131.132 1381250908.1629 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0938 -12326.5065 NaN NaN NaN NaN 135.803 1381250912.83408 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 140.455 1381250917.4855 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.379 0 4842.0969 -12326.522 NaN NaN NaN NaN 145.015 1381250922.04526 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 4842.0994 -12326.5379 NaN 4842.09940010532 -12326.5379000009 NaN 149.682 1381250926.71268 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN 11.6158 NaN NaN NaN 0.00298638 4842.101 -12326.5542 NaN NaN NaN NaN 154.397 1381250931.427 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.0497532 261.365 0 4842.1014 -12326.5704 NaN NaN NaN NaN 159.072 1381250936.10275 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.1006 -12326.5865 NaN NaN NaN NaN 166.156 1381250943.18665 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.098 -12326.6195 NaN NaN NaN NaN 170.827 1381250947.85818 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 175.498 1381250952.52893 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.0221126 261.394 0 4842.0966 -12326.636 NaN NaN NaN NaN 180.06 1381250957.09055 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0953 -12326.6518 NaN NaN NaN NaN 184.744 1381250961.77478 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0936 -12326.6683 NaN NaN NaN NaN 189.419 1381250966.44937 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.092 -12326.6848 NaN NaN NaN NaN 194.087 1381250971.11713 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.279 0.00298638 4842.0905 -12326.7012 NaN NaN NaN NaN 198.754 1381250975.78452 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0885 -12326.7177 NaN NaN NaN NaN 203.421 1381250980.45197 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0869 -12326.7339 NaN NaN NaN NaN 208.095 1381250985.12497 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0854 -12326.7504 NaN 4842.08540010532 -12326.7504000009 NaN 212.748 1381250989.77887 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN 11.6399 1.39219 0 261.365 0.00298638 4842.085 -12326.7669 NaN NaN NaN NaN 217.401 1381250994.43118 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0852 -12326.7837 NaN NaN NaN NaN 222.056 1381250999.0863 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.085 -12326.801 NaN NaN NaN NaN 226.714 1381251003.74423 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0847 -12326.8179 NaN NaN NaN NaN 231.362 1381251008.39227 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.379 0.00298638 4842.0846 -12326.8345 NaN NaN NaN NaN 236.009 1381251013.03973 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 240.656 1381251017.68646 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 4842.0844 -12326.8511 NaN NaN NaN NaN 245.237 1381251022.267 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN 11.6371 1.39219 0 261.293 0.00298638 4842.0833 -12326.8837 NaN 4842.08330010531 -12326.8837000009 NaN 252.356 1381251029.38681 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0 NaN NaN NaN NaN NaN NaN 288.444 1381251065.47467 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 293.03 1381251070.06015 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 297.596 1381251074.6261 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.293 0.00298638 NaN NaN NaN NaN NaN NaN 302.162 1381251079.19315 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 306.746 1381251083.776 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 311.314 1381251088.34464 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 315.879 1381251092.90994 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.408 0.00298638 NaN NaN NaN NaN NaN NaN 320.439 1381251097.4693 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 325.017 1381251102.04776 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 329.595 1381251106.62531 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39089 0 261.351 0.00298638 NaN NaN NaN NaN NaN NaN 338.31 1381251115.34052 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 342.914 1381251119.94452 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN 11.6454 NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 347.483 1381251124.51331 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 352.047 1381251129.07751 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.243238 261.351 0.00298638 NaN NaN NaN NaN NaN NaN 356.607 1381251133.63779 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 361.187 1381251138.21762 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 365.749 1381251142.77979 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 370.315 1381251147.34592 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0.0773939 261.336 0.00298638 NaN NaN NaN NaN NaN NaN 374.883 1381251151.91348 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 379.485 1381251156.51575 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 384.07 1381251161.10059 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 388.654 1381251165.68399 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN 260 NaN NaN NaN NaN NaN NaN 1.39219 0 261.307 0.00298638 NaN NaN NaN NaN NaN NaN 393.236 1381251170.26596 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 397.829 1381251174.85919 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 402.401 1381251179.43143 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 
NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 0.00298638 NaN NaN NaN NaN NaN NaN 406.967 1381251183.9971 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 

Modifier 3 Après quelques manipulations, j'ai fait fonctionner le fichier complet ci-dessus, mais je ne sais pas pourquoi cela fonctionne:

^([^a-zA-Z]*(NaN)*[^a-zA-Z]*)+$
1
Nick 17 janv. 2017 à 03:02

2 réponses

Meilleure réponse

Essaye ça:

^((NaN)?[^a-zA-Z\r\n])*$

Consultez la démo en direct.

Cela correspond aux lignes qui n'ont pas de lettres, mais autorise NaN n'importe où.

2
Bohemian 17 janv. 2017 à 00:38

Cela devrait fonctionner pour votre cas mis à jour, en supposant que vous êtes intéressé par les lignes "numériques":

^((NaN|([-.0-9]+))\s+)+$

Vous pouvez le tester sur regexr si vous le souhaitez.

1
declension 17 janv. 2017 à 00:44